[结贴]dup2似乎不能和pipe联合使用,做i/o重定向?
本帖最后由 asker160 于 2017-03-08 18:42 编辑我尝试把一个pipe和stdin/stdout连接起来,我希望stdin输入的东西被写入到pipe的write端,然后pipe的read端自动把内容dump到控制台。程序如下:
#include<stdio.h>
#include<unistd.h>
int main(){
int pipefd;
pipe(pipefd);
int& readfd=pipefd;
int& writefd=pipefd;
dup2(STDIN_FILENO,writefd);
dup2(STDOUT_FILENO,readfd);
char buf;
scanf("%s",buf);
return 0;
}
编译运行这个程序,除了scanf能接受输入以外,没有什么其他的控制台输入了。
我的问题:
1. 我的两个dup2是否真的把控制台I/O重定向到了pipe
2. 如果是,那么我scanf输入的内容,有没有到pipe里面,pipe的读端有没有自动关联到stdout并打印出来?
我的程序该怎么改呢?
谢谢。
没有write(1,...),数据怎么可能被dump出来,scanf里(一般意义上)只有read(0,...) int dup2(int oldfd, int newfd);
你写反了。 你说的对。
页:
[1]