我想将一个FIFO重定向到标准输出,我阅读了文档http://man7.org/linux/man-pages/man2/tee.2.html。
文档中写道
控制台显示:tee:无效参数。第一个参数应该是stdin吗?
文档中写道
tee(int fd_in, int fd_out,...)
,但是当我将FIFO文件描述符作为第一个参数传递时,它会报无效错误。#define _GNU_SOURCE
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <limits.h>
int main() {
int num = 0, fd;
char fifo[] = "/tmp/tmpfifo";
fd = open(fifo, O_RDONLY, 0644);
if (fd == -1) {
perror("open");
exit(EXIT_FAILURE);
}
num = tee(fd, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
if (num < 0) {
perror("tee");
exit(EXIT_FAILURE);
}
fprintf(stderr,"%d\n", num);
return 0;
}
控制台显示:tee:无效参数。第一个参数应该是stdin吗?
dup2
函数。 - Some programmer dudeopen
的标志没问题吗?应该只有O_RDONLY
或O_WRONLY
吧?你的程序是否要与自身通信?你是如何创建 FIFO 的? - Some programmer dude