パイプからデータを消費するための、よりポータブルで最速の方法に興味があります。
たとえば、Linux で考えられる最速の方法は次のとおりです。
#define _GNU_SOURCE
/* ... */
int fd;
int pipefd[2];
pipe(pipefd);
/* ... */
fd = open("/dev/null", O_WRONLY);
splice(pipefd[0], NULL, fd, NULL, INT_MAX, SPLICE_F_MOVE);
...しかし、ポータブルではありません。
更新 1:
パイプ全体を閉じて、必要になるたびに作成するとどうなりますか?
/*consume*/
close(pipefd[0]);
close(pipefd[1]);
他のメソッド、つまり read()/write() を使用するよりも高速ですか?