我想使用splice
將STDIN_FILENO
中的數據零拷貝到文件描述符(可以是常規文件,char或塊設備,FIFO或任何可以用open
打開的東西)。爲了使用splice
,或文件描述符或到文件描述符必須是管道的適當端,因此通常當程序員想要從零拷貝數據時創建一個管道作爲中間緩衝區非管道到非管道。但是,如果STDIN_FILENO
已經是管道的讀取端,那麼我可以跳過該步驟並嘗試直接從STDIN_FILENO
拼接到另一個文件描述符。因此,我希望能夠確定STDIN_FILENO
是否是管道的讀取結束。確定可讀文件描述符是否是管道的讀取端
是否有Linux系統調用可以確定STDIN_FILENO
是否是管道的讀取結束?
我編寫了創建一個管道,叫'fstat',並測試'S_ISFIFO'測試程序的案件:HTTP://引擎收錄。 com/ntauU2b5。結果是'st_mode'上管道讀端的'S_ISFIFO'爲TRUE。你的猜測是正確的,它實際上是按照POSIX標準:「S_ISFIFO(m)測試管道**或** FIFO特殊文件」(http://www.opengroup.org/onlinepubs/009695399/basedefs/sys /stat.h.html) – 2010-09-04 00:25:44