是一个文件描述符,它的进程是本地的,也是Unix上的全局文

Alo*_*lon 3 c unix file-descriptor

int fd = socket(//arguments);
Run Code Online (Sandbox Code Playgroud)

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

dus*_*uff 5

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

可以通过UNIX域套接字将文件描述符传递给另一个进程.完成此操作后,每个进程都将拥有文件描述符的副本,可能位于不同的FD编号下.但它是一种混乱的API,并且很少使用.


小智 5

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