标签: c sockets unix posix
我需要记录套接字使用情况,并编写了一个LD_PRELOAD库。
问题是当我覆盖read()和write()时,普通文件操作也被记录(当然)。
那么如何区分普通文件描述符和套接字描述符呢?
答案 0 :(得分:29)
在描述符上调用fstat并在结果上使用S_ISSOCK宏。
fstat
struct stat statbuf; fstat(fd, &statbuf); S_ISSOCK(statbuf.st_mode);