Je souhaite utiliser splice
pour copier les données de STDIN_FILENO
vers un descripteur de fichier (qui peut être un fichier normal, un dispositif char ou bloc, FIFO ou tout ce qui peut être ouvert avec open
). Pour utiliser splice
, le descripteur de fichier du ou le au descripteur de fichier doit être l'extrémité appropriée d'un canal, donc généralement un canal est créé pour servir de tampon intermédiaire lorsque le programmeur veut copier des données depuis zéro. non-tuyau à non-tuyau. Cependant, si STDIN_FILENO
est déjà l'extrémité de lecture d'un canal, alors je pourrais sauter cette étape et tenter de passer directement de STDIN_FILENO
à l'autre descripteur de fichier. Par conséquent, je voudrais être en mesure de déterminer si STDIN_FILENO
est l'extrémité de lecture d'un tuyau.Déterminer si un descripteur de fichier lisible est l'extrémité de lecture d'un canal
Y at-il un appel système Linux qui peut déterminer si STDIN_FILENO
est l'extrémité de lecture d'un canal?
Je codé un:. Http: // pastebin. com/ntauU2b5. Le résultat est que 'S_ISFIFO' sur le' st_mode' pour l'extrémité de lecture d'un tuyau est TRUE. Votre estimation est correcte, et elle est en fait conforme à la norme POSIX: "S_ISFIFO (m) Test pour un tube ** ou ** fichier spécial FIFO" (http://www.opengroup.org/onlinepubs/009695399/basedefs/sys /stat.h.html) –