【问题标题】:What happens when you call close() on a pipe file descriptor that was duplicated with dup2()?当您对使用 dup2() 复制的管道文件描述符调用 close() 时会发生什么?
【发布时间】:2021-05-08 10:46:40
【问题描述】:

我有一个关于 Unix 和 C 编程中的文件描述符的问题。

假设我使用pipe(fd) 获取管道端的文件描述符 3 和 4,3 连接到读取端,4 连接到写入端。

现在我使用dup2(fd[write_end],1) 将写入端的描述符(为4)复制到我的进程中的文件描述符1。如果我现在执行close(fd[write_end]),它会关闭描述符 1 还是描述符 4?

【问题讨论】:

标签: c pipe file-descriptor dup2


【解决方案1】:

成功调用dup2后,两个文件描述符都有效。

当您随后调用close(fd[write_end]) 时,因为fd[write_end] 设置为4,这与close(4) 相同。所以文件描述符 1 保持打开和可用。

【讨论】:

    猜你喜欢
    • 2012-11-18
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    • 1970-01-01
    相关资源
    最近更新 更多