Linux 之exit() 进程退出函数

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

  • exit()_exit() 函数

头文件

#include
#include

原型

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

_exit()
os立刻把管理内存的结构体、虚拟内存释放掉。
exit()
不会马上干掉结构体,先看先看当前进程有没有文件缓存区,若有则会先处理缓存区中的数据,然后销毁结构体。

#include
#include
#include

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输出字符串则会被立即打印。

  • 补充
    C语言中的exit()函数与 return 对比

你可能感兴趣的:(Linux 之exit() 进程退出函数)