"); //-->
进程的退出
linux下进程数量太多会导致系统崩溃,在使用完一个进程之后要及时终止它。
进程退出一般有三种方法:
1、在main函数中使用 return关键字 ,使用 return 后系统会调用 exit()函数来终止进程。
2、手动调用 exit() 来终止进程。
3、调用 _exit() 来终止进程。
exit() 和 _exit() 函数
头文件
#include<unistd.h>
#include<stdlib.h>
1
2
原型
void _exit(int status);
void exit(int status);
1
2
_exit()
os立刻把管理内存的结构体、虚拟内存释放掉。
exit()
不会马上干掉结构体,先看先看当前进程有没有文件缓存区,若有则会先处理缓存区中的数据,然后销毁结构体。
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main()
{
pid_t res;
res = fork();
if(res == -1)
{
printf("fork err\r\n");
}
if(res == 0)
{
//不加回车换行符,让输出的字符串数据保留在io缓存区里面
printf("son");
//退出状态设置为0,表示正常退出。
_exit(0);
}
else if(res > 0)
{
printf("parent");
exit(0);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
编译后执行结果
jl@jl-virtual-machine:~/test$ ./a.out
parentjl@jl-virtual-machine:~/test$
jl@jl-virtual-machine:~/test$
1
2
3
注意第二行开头的parent,因为在父进程中用的是 exit() 函数,在进程退出前会先处理完缓存区中的数据,所以缓存区中滞留的parent在推出前被打印出来。
使用\r\n输出字符串则会被立即打印。
补充
C语言中的exit()函数与 return 对比
————————————————
原文链接:https://blog.csdn.net/engineer0/article/details/109213577
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
linux入门精华
uClinux系统分析
Linux中的fork与exec系列函数分析
由于英特尔裁员和公司重组,主要的英特尔 Linux 驱动项目正在消亡
基于ARM的嵌入式Linux系统开发 中
实时Linux技术:如何在嵌入式LINUX中应用实时特性
Linux系统下USB摄像头驱动开发
RK3506核心板SDK重磅升级,解锁三核A7实时控制新架构
[链接]Firefox_ 重新发现网络
彻底告别486:Linux内核维护者正式移除英特尔486处理器支持
嵌入式Linux优化:加快系统起动和应用起动的过程
FFT公司9200的板子的资料
Kontron与Congatec合作开发安全的嵌入式Linux平台
嵌入式LINUX开发套件常见问题解答
53年后,惠普于1972年推出的总线标准获得了稳定的Linux驱动——通用接口总线拥有惊人的8 MB/s带宽
Linux 今天 34 岁了
Linux内核源代码的阅读和工具介绍(aqian转)
Linux就AI生成代码定下规则:允许Copilot类工具、拒绝劣质AI代码,错误由人类负责
一种嵌入式ARM-Linux GPS智能终端设计
Linux系统的DS18B20驱动程序源代码
uClinux系统分析
[转帖]NeuLinux嵌入式Linux开发平台
Linus Torvalds 称谷歌工程师提交的 RISC-V 代码为“垃圾”,并表示它“让世界变得更糟糕”
基于ARM的嵌入式Linux系统开发 下
U-BOOT 与 MontaVista Linux 的移植
基于ARM-Linux的MiniGUI的仿真与移植
GeForce 590 驱动分支是首个不支持 GTX 9 和 10 系列 GPU 的分支——Linux 版本标志着定义时代显卡的终结
ARM 开发板使用手册 在三星 S3C2410开发板上烧写linux
基于Linux平台的温度传感器DS18B20驱动程序设计
基于ARM的嵌入式Linux系统开发 上