我使用exit()
来终止进程。我没有注册任何退出处理程序,我也不关心退出时刷新缓冲区,所以想到使用_exit()
作为更强大的方法来终止进程。
唯一的问题是,_exit()
是否正常处理所有打开的文件描述符并打开套接字?
答案 0 :(得分:6)
函数exit
调用_exit
。来自TLPI:
exit()执行以下操作:
- 退出处理程序称为
- 刷新stdio流缓冲区
- 调用_exit()系统调用
所有文件描述符,目录流,转换 描述符和消息目录描述符在调用中打开 过程应该结束。
答案 1 :(得分:3)
是的,确实如此。实际上,在大多数平台上,操作系统会关闭文件和套接字以终止进程,因此如果它完成_exit()
,exit()
,assert(false)
或kill -KILL
并不重要。
请注意,FILE *
未正确关闭stdio _exit()
流,并且任何未写入(仍然缓冲)的数据都将丢失。