当前位置:   article > 正文

进程的退出--exit()与_exit()的区别_在父子进程退出时对 exit 和_exit 系统调用的区别进行测试。

在父子进程退出时对 exit 和_exit 系统调用的区别进行测试。


进程终止:①异常终止;②正常终止

异常终止:①进程收到某种信号;

                ②调用abort()函数;[堕胎]

正常终止:①main()函数返回

                ②调用exit()函数

                三、调用_exit()函数或_Exit()函数

exit()函数执行时会无条件停止剩下的所有操作,清理包括PCB在内的各种数据结构,并终止本进程的运行,在执行推出之前加了若干道工序,它要检查文件的打开情况,把文件缓冲区的内容写回文件,即“清理I/O缓冲”。

_exit()函数的作用是直接使进程停止运行,清楚其使用的内存空间,并清楚其在内核中的数据结构。


程序说明:

exit1.c

/****exit1.c****/
#include<stdio.h>
#include<stdlib.h>
main(){
	printf("hello\n");
	printf("world\n");
	exit(0);
}

exit2.c

/****ecit2.c****/
#include<stdio.h>
#include<unistd.h>
main(){
	printf("hello\n");
	printf("world\n");
	_exit(0);
}

运行结果:

调用_exit()函数时,缓冲区的记录无法输出。

调用exit()函数时,缓冲区的记录也能正常输出。调用exit()之后,该进程并不会马上完全消失,而是留下了一个成为僵尸(Zombie)的数据结构。


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/108161
推荐阅读
相关标签
  

闽ICP备14008679号