【发布时间】:2010-05-06 12:12:50
【问题描述】:
我在linux下使用popen执行命令,然后4个进程使用相同的输出。 我试图再次复制文件描述符以将其传递给每个进程。 这是我的代码:
FILE* file_source = (FILE*) popen(source_command, "r");
int fd = fileno(file_source);
fdatasync(fd);
int dest_fd[4], y, total = 4;
for (y = 0; y < total; y++) {
dest_fd[y] = dup(fd);
}
实际上,如果将 total 设置为 1 它可以正常工作,在更改 total = 4 后它不再起作用。 这个答案太接近我需要的了: link
【问题讨论】:
-
dup() 是否返回 -1?你试过检查errno吗?
-
does not work anymore到底是什么意思?我猜你的阅读失败了,而不是dup失败
标签: c linux file-descriptor