使用流来管理* nix进程之间的输入/输出

时间:2012-04-18 00:34:53

标签: c linux stream exec fork

我正在研究C中一个相当简单的应用程序。最终目标是在* nix环境中将输出从一个进程传输到另一个进程的输入(是的,我知道pipe()命令和dup / dup2但我试图找到使用这些命令)。我想知道是否有任何方法来连接流而不是使用文件描述符(系统不保证符合POSIX)。

所以基本上我想做这样的事情(伪代码)

pid = fork()

if pid == 0 
    // assign this process's stdin to the parents stdout.
    stdin = parent.stdout;
    exec() // launch new process that receives the parents stdout as stdin
    // child stuff....
else
    // parent stuff....

我知道它可能不会像上面那样简单地执行任务,但有没有办法只使用流来做到这一点?我试着环顾四周,但找不到任何东西..

谢谢!

1 个答案:

答案 0 :(得分:0)

对不起,如果我在这里忽略了这一点,但* nix的整个哲学是一个程序,一个工作。如果您需要一个程序将程序的内容转储到屏幕上,那么您可以使用cat命令。如果文件太大而您需要分页符,则将cat的输出传递给more命令:

cat myfile.txt |更

如果您需要在两个终端应用程序之间进行管道连接,那么您打算使用命令行来执行此操作:

myprog1 | myprog2

显然这是哲学方法,所以如果这没有用,那么你可以澄清你想要管道的东西以及你为什么要在这个过程中做到这一点吗?