默认情况下,一个文件描述符在execve之后,还是保持打开状态的. open一个文件的时候, 可以使用FD_CLOEXEC这个flag,改变这个初始值.

在open的时候带上这个flag,就可以避免再次使用fcntl去设置,因为用fcntl设置的时候是线程不安全的, 可能在fork或者execve的时候出现问题.

问题, execve是个什么问题? 为什么会牵扯到文件描述符? 问题2, 如果是整个函数退出(main函数退出), 文件描述符是关闭的吧?

下午又了解了一下, 问题1的回答见O_CLOEXEC 2 问题2的回答应该是”是”, 在Unix环境高级编程第三章讲到.