如果文件描述符特定于每个进程(即两个进程可以使用相同的文件描述符id来引用不同的打开文件),那么如何能够通过套接字等共享文件描述符(例如共享mmap)?
它是否依赖于在每个进程下将内核映射到相同的数字地址范围?
发布于 2018-03-08 13:49:16
当您在套接字上共享文件描述符时,内核会进行中介。您需要使用这个cmsg(3)宏准备数据,使用sendmsg(2)发送数据,并使用recvmsg(2)接收数据。内核涉及后两个操作,它处理从文件描述符到传输文件描述符所需的任何数据的转换,并使文件描述符在接收过程中可用。
不同进程中相同的fd如何指向同一个文件?提供了有用的背景。发送过程发送一个文件描述符,这意味着与其(私有)文件描述符表有关;内核知道在系统范围内打开的文件表中映射到什么,并根据需要在接收进程的文件描述符表中创建一个新条目。
https://unix.stackexchange.com/questions/429009
复制相似问题