我知道socket()
返回通信实例的句柄(整数1),就像文件描述符一样。
我认为(至少对我来说)如果它返回一个不透明的指针(如来自FILE*
的{{1}})会更有意义,但是一个整数?实现如何使用此整数值来区分通信实例和另一个?
(同样的事情适用于fopen()
我认为?)
答案 0 :(得分:2)
实现如何使用此整数值来区分通信实例和另一个?
细节取决于实现,但可以安全地假设操作系统将文件句柄映射到适当的数据块。整数意味着什么无关紧要 - 它可以是数组的索引,随机选择的数字,用作标识符,或其他东西。代码中最重要的是数字代表特定的文件或套接字。
socket()
返回的整数是file descriptor,即引用特定FILE
数据结构的值。人们经常说Unix "everything is a file",因为文件系统被用作许多资源的接口,包括基于磁盘的文件,管道,打印机和终端等设备以及网络连接。创建新文件句柄的函数(例如open()
,accept()
,pipe()
和socket()
应返回关联的文件描述符。