Linux套接字描述符

时间:2015-04-05 16:51:57

标签: linux sockets

我正在阅读有关unix域套接字的教程link

从SO上搜索,我发现套接字描述符与文件描述符相同,据说指向文件描述符表中的一个条目。

如果这是真的,我想问一下,对于指向打开文件的inode的fd,套接字描述符的条目是否还包含套接字文件的inode?

同样在示例代码中,服务器接受连接后:

len = sizeof(struct sockaddr_un);
s2 = accept(s, &remote, &len);

s2指向什么(如果套接字描述符类似于fd,s2指向文件描述符表中的哪个条目)?

另外,unix域套接字API是否只对下面的套接字文件使用open,read和write?

2 个答案:

答案 0 :(得分:0)

我认为“s2”只是在客户端监听的另一个套接字描述符。这是接受的手册页:

http://man7.org/linux/man-pages/man2/accept.2.html

基本上,正在发生的事情(假设我在Beej的网站上查看正确的代码)是您创建了一个套接字描述符,它可以接受连接。实际建立连接时,您将创建特定于该连接的另一个套接字。 This page has another example可能会让事情变得更清晰。

答案 1 :(得分:0)

是的,它将有一个特定的inode条目,因为socket也是来自文件系统的资源,它是devfs的一部分。

您可以通过lsof命令

找到套接字关联fd详细信息