0

我正在使用 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....

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

谢谢!

4

1 回答 1

0

抱歉,如果我在这里遗漏了重点,但 *nix 的整个理念是一个程序,一份工作。如果您需要一个程序将程序的内容转储到屏幕上,那么您可以使用 cat 命令。如果文件太大并且您需要分页符,则将 cat 的输出通过管道传递给 more 命令:

猫 myfile.txt | 更多的

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

myprog1 | myprog2

显然这是哲学方法,所以如果这没有帮助,那么你能否澄清你试图管道的内容以及你为什么要在过程中这样做?

于 2012-04-18T00:41:50.807 回答