int fd = socket(//arguments);
该描述符可以通过IPC传递到另一个过程,并且仍然有效,或者它是创建它的过程的本地?
文件描述符是该过程的本地。例如,每个过程都会在文件描述符0、1和2中具有其标准输入,输出和错误。
可以将文件描述符传递到UNIX域套接字上的另一个过程。完成此操作后,每个过程将具有文件描述符的副本,可能是不同的FD编号。不过,这是一种混乱的API,很少使用。
是的,文件描述符是该过程的本地。但是,当一个过程分叉时,父母和孩子具有相同的文件描述符表。这很棒,因为它允许IO重定向,这是一个非常方便的技巧。