日期:2014-05-16  浏览次数:20762 次

为什么dup/dup2要清楚close-on-exec标志位?
APUE上面说,如果open的时候指定了O_CLOEXEC那么在dup/dup2的时候会清理掉这个标志位。
同样如果用fcntl的F_DUPFD操作来dup的话,也是同样的效果。

问题是: 为什么要在dup的时候去清理这个标志位呢?
不清理会有什么问题吗? 其他的标志位在dup的时候为什么不清理?

------解决方案--------------------
这个应该只是一个选择吧,像dup3和dup2相比就多了O_CLOEXEC可控功能
而fcntl也有一个F_DUPFD_CLOEXEC枚举选项,O_CLOEXEC可用