2
我從調用者那裏獲得一個有效的「fd」對象。我怎麼知道什麼是FD類型 - 無論是指文件,套接字,設備等? 取決於引用的類型,我需要執行特定的功能,比如說如果fd與文件關聯,那麼我需要執行讀取。如果它與一個套接字關聯,那麼我需要獲取套接字屬性。如何獲得與fd相關的設備類型
我從調用者那裏獲得一個有效的「fd」對象。我怎麼知道什麼是FD類型 - 無論是指文件,套接字,設備等? 取決於引用的類型,我需要執行特定的功能,比如說如果fd與文件關聯,那麼我需要執行讀取。如果它與一個套接字關聯,那麼我需要獲取套接字屬性。如何獲得與fd相關的設備類型
嗯,至少在理論上,你還是做一個插座的讀取,並用於設備和管道,並.... :-P
如果你想從插座更多數據,比如套接字地址,你可以調用這些函數。對於非套接字來說,它只會失敗,並且由您來決定如何處理這個問題。
如果你真的必須知道,在你的文件描述符做一個fstat
,然後看它的模式(st_mode
):
mode_t type;
struct stat fdstat;
/* ... */
if (fstat(fd, &fdstat) == -1)
/* error out */
type = fdstat.st_mode & S_IFMT;
switch (type) {
case S_IFSOCK:
/* socket */
case S_IFIFO:
/* FIFO */
/* other cases */
}
'如果你真的必須know'我真的必須知道。 – 2014-06-11 20:29:03