Где хранятся сокеты FD? - PullRequest
       8

Где хранятся сокеты FD?

1 голос
/ 11 августа 2010

Я столкнулся с несколькими проблемами при написании серверного приложения с использованием TCP в системе Linux.У меня есть несколько запросов.

  1. Где хранятся FD сокетов и какие атрибуты связаны с FD сокетов.
  2. Как ядро ​​различает FD, такие как FD сокетов, FD файлов, FD очереди сообщений

FD Socket принимаются как

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

В чем разница между
a) close(sockFD);
и
b) int sockCopy = sockFD; //copy the socketfd
close(sockCopy);

Случай b не закроет сокет, почему?

1 Ответ

3 голосов
/ 11 августа 2010
  1. Дескрипторы файлов сокетов хранятся в целочисленных переменных в вашем приложении, как и другие файловые дескрипторы.

  2. Ядро внутренне различает разные типы файловых дескрипторов через разные указатели функций в пределах связанного struct file.

  3. Нет никакой разницы; int sockCopy = sockFD; close(sockCopy); закроет сокет . Ядро не заботится о том, что вы называете переменной, в которой храните дескриптор файла - все, что его волнует, это числовое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...