问题 套接字和文件描述符


我正在学习Unix中的网络编程,目前正在尝试理解套接字和文件描述符的概念。根据我的理解,文件描述符只是指针数组中的位置(文件描述符表?),这些指针指向内存中的某个文件。

套接字描述符与文件描述符共享此数组,但指针指的是套接字。或者还有什么东西只用于套接字?

这个数组对每个应用程序/进程都是唯一的吗


2833
2017-11-14 11:33


起源



答案:


是的,套接字也是与文件在同一个表中的索引。至少对于UNIX系统(如Linux和OSX),Windows是不同的,这就是为什么你不能使用例如 read 和 write 接收和发送数据。

每个进程都有自己的“文件”描述符表。


13
2017-11-14 11:40



我对文件描述符的解释是否正确,你能说文件描述符表是某种多态吗? - Carlj901
@ Carlj901是的,有点儿。文件描述符(由...返回) open 要么 socket)是这个表或指针的索引,这些指针可以指向不同的结构,具体取决于它是文件还是套接字。 - Some programmer dude


答案:


是的,套接字也是与文件在同一个表中的索引。至少对于UNIX系统(如Linux和OSX),Windows是不同的,这就是为什么你不能使用例如 read 和 write 接收和发送数据。

每个进程都有自己的“文件”描述符表。


13
2017-11-14 11:40



我对文件描述符的解释是否正确,你能说文件描述符表是某种多态吗? - Carlj901
@ Carlj901是的,有点儿。文件描述符(由...返回) open 要么 socket)是这个表或指针的索引,这些指针可以指向不同的结构,具体取决于它是文件还是套接字。 - Some programmer dude


Socket只不过是UNIX操作系统中的一个文件。甚至所有内容都被视为UNIX操作系统中的文件。每当我们创建套接字时,都会在文件描述符表中创建一个条目,其中包含标准的i / o和标准错误以及其他详细信息。文件描述符充当指向文件表的指针,该表包含有关要采取的操作(即读取,写入等)的信息,并且它包含指向该特定文件的inode表的指针,并且您可能知道inode包含所有必需的deatils of a file。


3
2018-01-09 13:12



在UNIX中是否将everthing视为文件?像所有的过程一样?套接字文件看起来如何或包含什么? - GENIVI-LEARNER