当前位置: 技术问答>linux和unix
读取子进程的输出
来源: 互联网 发布时间:2016-03-02
本文导语: fork然后execl一个子进程。 在父进程中需要处理子进程的标准输出的内容,有哪些种操作方式? | 最简单的就是 popen | 干脆写出来吧 #include #include #include int main() { int fd...
fork然后execl一个子进程。
在父进程中需要处理子进程的标准输出的内容,有哪些种操作方式?
在父进程中需要处理子进程的标准输出的内容,有哪些种操作方式?
|
最简单的就是 popen
|
干脆写出来吧
#include
#include
#include
int main()
{
int fd[2];
char buf[32];
memset(buf,0,sizeof(buf));
if(pipe(fd)!=0)return -1;
if(fork()==0)
{
close(fd[0]);
dup2(fd[1],1);
printf("123456789");//这个地方换成你的exec就可以了
exit(0);
}
close(fd[1]);
read(fd[0],buf,sizeof(buf));
printf("aaa %sn",buf);
}
#include
#include
#include
int main()
{
int fd[2];
char buf[32];
memset(buf,0,sizeof(buf));
if(pipe(fd)!=0)return -1;
if(fork()==0)
{
close(fd[0]);
dup2(fd[1],1);
printf("123456789");//这个地方换成你的exec就可以了
exit(0);
}
close(fd[1]);
read(fd[0],buf,sizeof(buf));
printf("aaa %sn",buf);
}
|
在父进程fork子进程之前,用pipe建立管道,在子进程中,fork后,exec前,用dup2把管道的写端和标准输出(1)连接起来就可以了
|
mark
|
concern