是否可以在一个进程中保持标准输出完整,但仍然有一个通向第二个进程的管道?
我正在尝试为程序制作一个记录器。因此,我有第二个子进程,它通过管道并使用 tee 获取父进程的 stdout。贝娄就是一个例子。
if (fork()>0){ //parent
close(1);
dup(pip[1]);
close(pip[0]);
char a[100]="";
while (1){
gets(a);
puts(a);
}
} else { //child
close(0);
dup(pip[0]);
close(pip[1]);
execlp("tee", "tee", NULL);
}
这很好用。子级使用管道打印我在父级中输入的任何内容。
但是,是否可以让父级发送到 stdout,同时发送到管道?
I am trying to make a logger for a program. For that reason I am having a second child process that is getting the parent's stdout via a pipe and using tee. Bellow is an example.
if (fork()>0){ //parent
close(1);
dup(pip[1]);
close(pip[0]);
char a[100]="";
while (1){
gets(a);
puts(a);
}
} else { //child
close(0);
dup(pip[0]);
close(pip[1]);
execlp("tee", "tee", NULL);
}
This works fine. The child prints whatever I type in the parent using the pipe.
However is it possible to have the parent sending to stdout while simultaneously sending to the pipe?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
查看“write”的手册页,然后您可以保持标准输出打开并写入两个管道:
尽管您确实应该检查返回值和所有内容。
Check out the man page for "write", then you can leave stdout open and write to both the the pipes:
Although you really ought to be checking your return values and all.