【问题标题】:Can a process have more than one stdout and stdin?一个进程可以有多个标准输出和标准输入吗?
【发布时间】:2017-01-19 09:05:41
【问题描述】:

在编写程序(Unix 风格)时,它能否处理和管理多个 stdout 和 stdin 通道?

【问题讨论】:

  • 我很好奇你认为一个进程拥有多个标准输出意味着什么。例如,printf 的输出会去哪里?
  • 我会想出某种方法来通过重载方法选择要打印到的特定通道。我正在查看 websocketd 守护进程,想知道是否可以将 actor 实现为一个长时间运行的进程,它只会获取新的目标流来写入。我想使用套接字或其他轻量级通信流将是下一个最佳选择,但我想要 srd 标准输出的简单性。
  • 在那种情况下,这听起来像是你在寻找fopen()fprintf(),还是我误解了什么?
  • 如果您实际上要问的是“一个进程是否可以从其父进程获得多个输出或多个输入”,那么答案是“是”; exec 可以携带任意数量的文件描述符。

标签: c process operating-system posix


【解决方案1】:

没有;在任何给定时间(最多)一个标准输入和一个标准输出。归根结底,由于问题特别提到了Unix,标准输入是文件描述符0,标准输出是文件描述符1,并且只有一个给定编号的文件描述符。

【讨论】:

    【解决方案2】:

    根据定义,只有 1 个标准输入和 1 个标准输出。

    但是,您可能想看看命名管道。使用命名管道,您可以执行以下操作:

    mkfifo pipe1
    mkfifo pipe2
    cat a.a > pipe1
    cat b.b > pipe2
    yourapp pipe1 pipe2
    

    【讨论】:

      猜你喜欢
      • 2012-08-05
      • 1970-01-01
      • 2011-01-15
      • 2010-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-26
      • 1970-01-01
      相关资源
      最近更新 更多