通常情况下,后fork()而前exec()一个做getrlimit(RLIMIT_NOFILE, fds);,然后关闭所有文件描述符低于fds.
此外,close-on-exec可以使用文件描述符设置fcntl(),以便自动关闭exec().但是,这不是线程安全的,因为另一个线程可以fork()在此线程打开新文件描述符之后但在它设置close-on-exec标志之前.
在Linux上,这个问题已经通过向O_CLOEXEC函数添加标志来解决,open()因此不需要额外的调用来设置close-on-exec标志.
| 归档时间: |
|
| 查看次数: |
1662 次 |
| 最近记录: |