我發現,在 Unix 的“一切都是檔案”理念下,即使套接字也被視為檔案,并且可以存盤在檔案系統的路徑中。所以,出于好奇,我試圖創建一個 TCP-IP 套接字檔案。
這個答案顯示了如何創建一個命名的 Unix 域套接字檔案。但是struct sockaddr_in沒有sin_path欄位。所以我不知道如何創建一個命名的 TCP-IP 套接字檔案。誰能告訴我該怎么做?
uj5u.com熱心網友回復:
...甚至套接字也被視為檔案,并且可以存盤在檔案系統中的路徑中。
并不真地。有些套接字的端點由檔案表示。這些是 UNIX 域套接字(AF_UNIX),它們是一種變體,具有類似于 UDP 的訊息語意(SOCK_DGRAM)和類似于 TCP 的流語意(SOCK_STREAM)。
但是,UDP 和 TCP 套接字在 UNIX 中沒有檔案表示。它們有一個檔案描述符,雖然類似于普通檔案(讀寫系統呼叫與這些檔案一起作業),但它們不是由檔案系統中的路徑表示的。
還有一些類似/dev/tcp/..處理 bash shell 內的套接字的東西。但這也不是檔案系統上的實際路徑,而只是特定于 bash shell 的奇特語法。
有關這方面的更多資訊,另請參閱Wikipedia:Everything is a file其中特別指出:
...因此,對該功能的更準確描述是 Everything is a file descriptor。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/523621.html
標籤:文件插座Unix
上一篇:元素沒有附加到塊內的陣列中
