在Linux / Unix中同时访问带有2个程序的stdin

时间:2018-04-15 14:59:21

标签: c++ c linux stdin

我已经读过stdin是Linux / Unix中的一个文件。那么,2个程序可以同时访问同一个stdin吗?如果是,那么如何用C / C ++完成呢?

1 个答案:

答案 0 :(得分:3)

是的,这是可能的。它不是特定编程语言的功能,它是您正在运行的操作系统的一项功能。

看看这个shell脚本示例:

printf 'a\nb\n' | { { read x && echo $x; } <&0 & { read y && echo $y; }; }

此处,{ read x && echo $x; }(可能)将作为单独的流程执行,同样适用于{ read y && echo $y; }。这两个进程都从同一stdin读取,这是a\nb\n的{​​{1}}输出,因此您应该期望其中一个进程读取printf,另一个进程读取a 1}}。

值得指出的是,这个并不让两个程序都读取两行输入。无论哪个程序首先阅读,都会看到这一点输入。如果确实需要相同的输入行来转到两个单独的程序,则需要一个程序将输入复制到两个不同的文件或文件描述符。执行此操作的Unix实用程序的示例是b。如果需要,您可以查看该如何实施以获取更多详细信息。