Как определить, является ли дескриптор файла сокетом? - PullRequest
13 голосов
/ 17 октября 2010

Мне нужно зарегистрировать использование сокетов, и я написал библиотеку LD_PRELOAD.

Проблема в том, что когда я перезаписываю read () и write (), обычные файловые операции тоже регистрируются (конечно).

Так как же я могу отличить обычные файловые дескрипторы и дескрипторы сокетов?

1 Ответ

29 голосов
/ 17 октября 2010

Вызовите fstat в дескрипторе и используйте макрос S_ISSOCK в результате.

struct stat statbuf;
fstat(fd, &statbuf);
S_ISSOCK(statbuf.st_mode);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...