我们知道exit()函数是用来终止程序用的,它将调用exit系统调用,将程序状态作为参数返回给内核。但是之于_exit()和_Exit(),exit()的不同之处在于,exit()在调用exit系统调用之前,它将做一些最后的处理,包括两个部分:调用由atexit()注册的终止处理程序;关闭打开的流。这里我们要讨论的是第二点。
我们都知道,由fork()创建的子进程是父进程的副本,即使是采用了cow技术,在修改时也还是会创建副本再修改。因此,在父进程中打开的流也会复制到子进程中,如下面的代码。fork()