【问题标题】:Do duplicated descriptor files get closed after closing the original file descriptor?关闭原始文件描述符后是否会关闭重复的描述符文件?
【发布时间】:2017-09-05 02:57:51
【问题描述】:

复制文件描述符 fd 时调用 dup,并关闭原始文件描述符。

是否所有重复的文件描述符也会关闭?

【问题讨论】:

    标签: c file-descriptor dup2


    【解决方案1】:

    不,不会关闭重复项。否则主要用例(复制到STDOUT_FILENOSTDIN_FILENO)将毫无用处。

    【讨论】:

    • dup 的手册页没有说要关闭,你能把信息的来源介绍给我吗?谢谢
    • 嗯,很明显,因为dup 不做任何关闭...您需要参考其他一些 POSIX 手册页,也许是关于程序执行的。说到这一点,我很确定有一个(可能更多)两个文件描述符都将关闭的情况:在程序终止时。
    • @Bionix1441 如果您制作副本或一些纸张,然后切碎原件,您仍然有副本,对吗?这里基本上是一样的。一旦你创建了副本(使用dup 或类似的),那么原始描述符和复制描述符之间就没有链接了。您可能还应该阅读有关引用计数的内容,因为被复制的实际“文件”将使其引用计数器因复制而增加一,并且“文件”在引用之前不会真正关闭计数为零。
    • @Bionix1441 你想知道某事不会发生的信息来源吗?这很容易。阅读世界上所有的文档。没有文件说它会发生,所以我们可以得出结论,它不会发生。 (或有人忘记记录)
    • @Bionix1441 至于源码,为什么不花点时间看看一些实际源码呢?有许多兼容 POSIX 的操作系统提供了源代码,还有一些在书籍中有很好的记录。正如我所说,如果close 关闭了重复项,则主要用例将不起作用。
    猜你喜欢
    • 1970-01-01
    • 2021-03-12
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 2013-11-08
    • 2010-09-21
    • 2020-10-23
    相关资源
    最近更新 更多