新闻  |   论坛  |   博客  |   在线研讨会
Linux 之exit() 进程退出函数
电子禅石 | 2022-03-29 19:14:40    阅读:11120   发布文章

进程的退出

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


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
属于自己的技术积累分享,成为嵌入式系统研发高手。
推荐文章
最近访客