我们一般使用exit库函数而非_exit系统调用,原因在于exit最终也会调用_exit终止进程,但在此之前,它将会完成一些其它的工作,exit会执行如下动作:
- 如果程序中注册了进程终止处理函数,那么会调用终止处理函数。
- 刷新stdio流缓冲区。
- 执行_exit系统调用。
由此可知,exit会比_exit多做一些事情,包括执行 终止处理函数、刷新stdio流缓冲区以及调用_exit。在我们的程序当中,父、子进程不应都使用exit终止,只能由一个进程使用exit、而另一个使用_exit退出,当然一般推荐的是子进程使用_exit退出、而父进程则使用exit退出,其原因就在于调用exit函数终止程序会刷新进程的stdio流缓冲区。