Determining whether a readable file descriptor is the read end of a pipe

I would like to use splice to zero-copy data from STDIN_FILENO to a file descriptor (which could be to a regular file, char or block device, FIFO, or anything that can be opened with open). In order to use splice, either the from file descriptor or to file descriptor must be the appropriate end of a pipe, so generally a pipe is created to serve as an intermediary buffer when the programmer wants to zero-copy data from non-pipe to non-pipe. However, if STDIN_FILENO is already the read end of a pipe, then I could skip that step and attempt to splice directly from STDIN_FILENO to the other file descriptor. Therefore, I would like to be able to determine whether STDIN_FILENO is the read end of a pipe.

Is there a Linux system call that can determine whether STDIN_FILENO is the read end of a pipe?

7
задан Daniel Trebbien 3 September 2010 в 20:44
поделиться