Подтвердить что ты не робот

Как определить, является ли дескриптор файла сокетом?

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

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

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

4b9b3361

Ответ 1

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

struct stat statbuf;
fstat(fd, &statbuf);
S_ISSOCK(statbuf.st_mode);