2010-10-17 89 views
12

我需要記錄套接字的使用情況,並且我寫了一個LD_PRELOAD庫。如何判斷文件句柄是否是套接字?

問題是當我重寫read()和write()比普通文件操作也被記錄(當然)。

那麼如何區分普通文件描述符和套接字描述符呢?

回答

25

在描述符上調用fstat,並在結果上使用S_ISSOCK宏。

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

太棒了!非常感謝你! – netom 2010-10-17 10:56:23