进程中fork()与exec()
1 fork与文件,数据
由fork创建的子进程几乎与父进程相同(除了进程号),包括所有的变量保持与父进程一致,即子进程可用的数据是父进程数据的拷贝,只是内存地址不同;此外父进程中打开的文件标识符在子进程中同样有效,因为打开的文件标识符保存在内存中而不是程序中,因此父进程和子进程共同共用所有文件标识符。
2 exec和打开文件
当一个程序调用exec执行新程序后,该程序打开的文件在新程序中任然保持打开,已打开的文件描述符通过exec传递给新程序,但是打开文件的资政不会被exec改变。
fcntl(fd, flags, 1/0)用于设置执行关闭位的值。
3 终止exit()和__exit()
exit()与__exit()的区别:exit()在结束时会关闭打开的文件,清除缓存等操作,而__exit只是单纯的终止进程的执行,不会关闭打开的文件以及清除缓存