我需要记录套接字的使用情况,并编写了一个LD_PRELOAD库。
问题在于,当我覆盖read()和write()时,普通文件操作也会被记录(当然)。
那么我如何区分普通文件描述符和套接字描述符?
调用描述符上的fstat函数并在结果上使用S_ISSOCK宏。
fstat
struct stat statbuf; fstat(fd, &statbuf); S_ISSOCK(statbuf.st_mode);