Linux中文件描述符和socket描述符的關系和區別?


文件描述符(file descriptor)是內核為了高效管理已被打開的文件所創建的索引,其是一個非負整數(通常是小整數),用於指代被打開的文件,所有執行I/O操作(包括網絡socket操作)的系統調用都通過文件描述符。
我對這個問題的理解:
由於unix一切皆文件是思想,所以socket也會被當成文件處理,所以socket描述符和文件描述符本質上是相同的。
所以,假如有一個文件描述符是3,那么當socket創建一個套接字描述符時,不可能為3,因為已經存在與3綁定的文件了,文件描述符和套接字描述符是不可以沖突的。
無論是文件描述符還是socket描述符,都可以通過read和write操作,但是在read和write處理不同類型文件的描述符時,在內部的處理方式不同,比如socket的就是走網絡,普通文件的就是走磁盤IO。這已經屬於多態了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM