File-Descriptors
共享文件描述符
如果文件描述符特定於每個程序(即兩個程序可能使用相同的文件描述符 id 來引用不同的打開文件),那麼如何通過套接字等共享傳輸文件描述符(例如共享 mmap)?
它是否依賴於核心被映射到每個程序下的相同數字地址範圍?
當您通過套接字共享文件描述符時,核心會進行調解。您需要使用宏準備數據,
cmsg(3)
使用發送sendmsg(2)
和接收使用recvmsg(2)
。核心參與後兩個操作,它處理從文件描述符到傳輸文件描述符所需的任何數據的轉換,並使文件描述符在接收程序中可用。不同程序中的同一個fd如何指向同一個文件?提供有用的背景。發送程序發送一個文件描述符,這意味著與其(私有)文件描述符表相關的東西;核心知道在系統範圍的打開文件表中映射到什麼,並根據需要在接收程序的文件描述符表中創建一個新條目。