我正在阅读有关unix域套接字的教程link。
从SO上搜索,我发现套接字描述符与文件描述符相同,据说指向文件描述符表中的一个条目。
如果这是真的,我想问一下,对于指向打开文件的inode的fd,套接字描述符的条目是否还包含套接字文件的inode? p>
同样在示例代码中,服务器接受连接后:
len = sizeof(struct sockaddr_un);
s2 = accept(s, &remote, &len);
s2指向什么(如果套接字描述符类似于fd,s2指向文件描述符表中的哪个条目)?
另外,unix域套接字API是否只对下面的套接字文件使用open,read和write?
答案 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
命令