文件描述符是其进程的本地文件描述符还是 Unix 上的全局文件描述符

Is a file descriptor local to its process or global on Unix

int fd = socket(//arguments);

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

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

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

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