【问题标题】:Is a file descriptor local to its process or global on Unix [duplicate]是其进程的本地文件描述符还是Unix上的全局文件描述符[重复]
【发布时间】:2017-07-08 05:48:09
【问题描述】:
int fd = socket(//arguments);

这个描述符是否可以通过 IPC 传递给另一个进程并且仍然有效,或者它是创建它的进程本地的吗?

【问题讨论】:

  • 如果它是全局的,那么不同的进程如何对标准流使用相同的描述符编号?
  • 你说得对,我忘了。愚蠢的问题。

标签: c unix file-descriptor


【解决方案1】:

是的,文件描述符是进程本地的。然而,当一个进程派生一个子进程时,父进程和子进程具有相同的文件描述符表。这很棒,因为它允许 IO 重定向,这是一个非常方便的技巧。

【讨论】:

    【解决方案2】:

    文件描述符是进程本地的。例如,每个进程在文件描述符 0、1 和 2 上都有其标准输入、输出和错误。

    It is possible to pass a file descriptor to another process over a UNIX domain socket. 完成后,每个进程将拥有文件描述符的副本,可能在不同的 FD 编号下。不过,这是一种杂乱无章的 API,而且很少使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-30
      • 1970-01-01
      • 2017-09-05
      • 1970-01-01
      • 1970-01-01
      • 2014-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多