【发布时间】:2017-07-08 05:48:09
【问题描述】:
int fd = socket(//arguments);
这个描述符是否可以通过 IPC 传递给另一个进程并且仍然有效,或者它是创建它的进程本地的吗?
【问题讨论】:
-
如果它是全局的,那么不同的进程如何对标准流使用相同的描述符编号?
-
你说得对,我忘了。愚蠢的问题。
标签: c unix file-descriptor
int fd = socket(//arguments);
这个描述符是否可以通过 IPC 传递给另一个进程并且仍然有效,或者它是创建它的进程本地的吗?
【问题讨论】:
标签: c unix file-descriptor
是的,文件描述符是进程本地的。然而,当一个进程派生一个子进程时,父进程和子进程具有相同的文件描述符表。这很棒,因为它允许 IO 重定向,这是一个非常方便的技巧。
【讨论】:
文件描述符是进程本地的。例如,每个进程在文件描述符 0、1 和 2 上都有其标准输入、输出和错误。
It is possible to pass a file descriptor to another process over a UNIX domain socket. 完成后,每个进程将拥有文件描述符的副本,可能在不同的 FD 编号下。不过,这是一种杂乱无章的 API,而且很少使用。
【讨论】: