【问题标题】:Understanding UNIX Pipes and File Descriptors [closed]了解 UNIX 管道和文件描述符 [关闭]
【发布时间】:2011-09-18 15:34:53
【问题描述】:

我是 UNIX 管道通信的新手,需要一些帮助来理解这一点。我需要创建管道并派生通过这些管道与父进程通信的子进程。我的问题是

a) 为什么每个子进程都有一个管道?

b) 什么是真正的文件描述符,我需要为每个管道创建一个吗?

c) StdIn 和 StdOut 与这一切有什么关系?

【问题讨论】:

  • 很多问题!也许分开一个?一个更好的尝试可能是 unix.stackexchange.com 用于 UNIX/linux 问题。

标签: unix ubuntu


【解决方案1】:

为什么每个子进程都有一个管道?

因为单个管道只有两个端点。如果您尝试在所有子进程之间共享一个管道,您将不知道哪个子进程生成了给定的输出。

什么是真正的文件描述符?

操作系统持有的打开文件表中的条目。

我需要为每个管道创建一个 [文件描述符] 吗?

任何打开任何类文件对象的进程,包括管道的任一端,都需要有一个文件描述符,通过它可以与该类文件对象进行通信。实际上,在文件描述符表中有一个指向该文件的条目正是打开文件的。

stdin 和 stdout 和这个有什么关系?

stdin 是文件描述符表中的条目 0; stdout 是条目 1。如果您启动的进程读取并将其数据写入文件描述符 0 和 1,则可能是您希望连接管道的位置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-28
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    相关资源
    最近更新 更多