【问题标题】:Linux socket descriptorLinux 套接字描述符
【发布时间】:2015-04-05 16:51:57
【问题描述】:

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

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

如果这是真的,我想问,对于指向打开文件的 inode 的 fd,socket 描述符的条目是否还包含 socket 文件的 inode?​​p>

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

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

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

另外,unix 域套接字 API 是否只使用打开、读取和写入下面的套接字文件?

【问题讨论】:

    标签: linux sockets


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      你可以通过lsof命令找到socket associate fd的详细信息

      【讨论】:

        猜你喜欢
        • 2012-04-13
        • 1970-01-01
        • 2012-11-12
        • 2015-03-16
        • 1970-01-01
        • 2012-10-29
        • 2012-11-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多