benjimin Asked: 2018-03-09 03:48:42 +0800 CST2018-03-09 03:48:42 +0800 CST 2018-03-09 03:48:42 +0800 CST 共享文件描述符 772 如果文件描述符特定于每个进程(即两个进程可能使用相同的文件描述符 id 来引用不同的打开文件),那么如何通过套接字等共享传输文件描述符(例如共享 mmap)? 它是否依赖于内核被映射到每个进程下的相同数字地址范围? ipc file-descriptors 1 个回答 Voted Best Answer Stephen Kitt 2018-03-09T05:49:16+08:002018-03-09T05:49:16+08:00 当您通过套接字共享文件描述符时,内核会进行调解。您需要使用宏准备数据,cmsg(3)使用发送sendmsg(2)和接收使用recvmsg(2)。内核参与后两个操作,它处理从文件描述符到传输文件描述符所需的任何数据的转换,并使文件描述符在接收进程中可用。 不同进程中的同一个fd如何指向同一个文件?提供有用的背景。发送进程发送一个文件描述符,这意味着与其(私有)文件描述符表相关的东西;内核知道在系统范围的打开文件表中映射到什么,并根据需要在接收进程的文件描述符表中创建一个新条目。
当您通过套接字共享文件描述符时,内核会进行调解。您需要使用宏准备数据,
cmsg(3)
使用发送sendmsg(2)
和接收使用recvmsg(2)
。内核参与后两个操作,它处理从文件描述符到传输文件描述符所需的任何数据的转换,并使文件描述符在接收进程中可用。不同进程中的同一个fd如何指向同一个文件?提供有用的背景。发送进程发送一个文件描述符,这意味着与其(私有)文件描述符表相关的东西;内核知道在系统范围的打开文件表中映射到什么,并根据需要在接收进程的文件描述符表中创建一个新条目。