Linux 之exit() 进程退出函数

it2025-06-21  10

进程的退出 linux下进程数量太多会导致系统崩溃,在使用完一个进程之后要及时终止它。 进程退出一般有三种方法: 1、在main函数中使用return关键字,使用return后系统会调用exit()函数来终止进程。 2、手动调用exit()来终止进程。 3、调用_exit() 来终止进程。
exit() 和 _exit() 函数

头文件

#include<unistd.h> #include<stdlib.h>

原型

void _exit(int status); void exit(int status);

_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); } }

编译后执行结果

jl@jl-virtual-machine:~/test$ ./a.out parentjl@jl-virtual-machine:~/test$ jl@jl-virtual-machine:~/test$ 注意第二行开头的parent,因为在父进程中用的是 exit() 函数,在进程退出前会先处理完缓存区中的数据,所以缓存区中滞留的parent在推出前被打印出来。使用\r\n输出字符串则会被立即打印。
最新回复(0)