我对从管道中使用数据的更便携但最快的方式感兴趣。
例如,在 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())更快吗?