int fd = socket(//arguments);
这个描述符是否可以通过IPC传递给另一个进程并且仍然有效,或者它是创建它的进程的本地描述符?
答案 0 :(得分:5)
文件描述符是进程的本地描述符。例如,每个进程都将在文件描述符0,1和2上具有标准输入,输出和错误。
It is possible to pass a file descriptor to another process over a UNIX domain socket.完成此操作后,每个进程都将拥有文件描述符的副本,可能位于不同的FD编号下。但它是一种混乱的API,并且很少使用。
答案 1 :(得分:3)
是的,文件描述符是进程的本地描述符。但是,当进程分叉子进程时,父进程和子进程具有相同的文件描述符表。这很好,因为它允许IO重定向,这是一个非常方便的技巧。