C 如何判断文件句柄是否是套接字?

C 如何判断文件句柄是否是套接字?,c,sockets,unix,posix,C,Sockets,Unix,Posix,我需要记录套接字的使用情况,并编写了一个LD_预加载库 问题是当我重写read()和write()时,通常的文件操作也会被记录下来(当然) 那么,如何区分普通的文件描述符和套接字描述符呢?在描述符上调用fstat,并在结果上使用宏 struct stat statbuf; fstat(fd, &statbuf); S_ISSOCK(statbuf.st_mode);

我需要记录套接字的使用情况,并编写了一个LD_预加载库

问题是当我重写read()和write()时,通常的文件操作也会被记录下来(当然)


那么,如何区分普通的文件描述符和套接字描述符呢?

在描述符上调用
fstat
,并在结果上使用宏

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