File-Descriptors

共享文件描述符

  • March 8, 2018

如果文件描述符特定於每個程序(即兩個程序可能使用相同的文件描述符 id 來引用不同的打開文件),那麼如何通過套接字等共享傳輸文件描述符(例如共享 mmap)?

它是否依賴於核心被映射到每個程序下的相同數字地址範圍?

當您通過套接字共享文件描述符時,核心會進行調解。您需要使用宏準備數據cmsg(3)使用發送sendmsg(2)和接收使用recvmsg(2)。核心參與後兩個操作,它處理從文件描述符到傳輸文件描述符所需的任何數據的轉換,並使文件描述符在接收程序中可用。

不同程序中的同一個fd如何指向同一個文件?提供有用的背景。發送程序發送一個文件描述符,這意味著與其(私有)文件描述符表相關的東西;核心知道在系統範圍的打開文件表中映射到什麼,並根據需要在接收程序的文件描述符表中創建一個新條目。

引用自:https://unix.stackexchange.com/questions/429009