"); //-->
进程的退出
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
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。