套接字FD存储在哪里?

时间:2010-08-11 08:12:30

标签: linux tcp sockets

在linux系统上使用TCP编写服务器应用程序时,我遇到了一些问题。我的问题很少。

  1. 存储套接字FD的位置以及与套接字FD相关的属性是什么。
  2. 内核如何区分插槽FD,文件Fds,消息队列FD等FD。
  3. 接收套接字FD

    int sockFD = socket(..., ..., ...);
    

    有什么区别 a)close(sockFD);

    b)int sockCopy = sockFD; //copy the socketfd
    close(sockCopy);

    案例b不会关闭套接字为什么?

1 个答案:

答案 0 :(得分:3)

  1. 套接字文件描述符存储在应用程序中的整数变量中,就像其他文件描述符一样。

  2. 内核通过关联的struct file内的不同函数指针在内部区分不同的文件描述符类型。

  3. 没有区别; int sockCopy = sockFD; close(sockCopy); 关闭套接字。内核并不关心你所谓的存储文件描述符的变量 - 所有它关心的是数值。