我想使用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