我正在用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....
我知道这可能不像上面那样做作业那么简单,但是有没有办法仅使用流来做到这一点?我试着环顾四周,但什么也找不到。
谢谢!
很抱歉,如果我在这里错过了重点,但 *nix 的整个哲学是一个程序,一个工作。如果您需要一个程序将程序的内容转储到屏幕上,那么您有 cat 命令。如果文件太大并且您需要分页符,则将 cat 的输出通过管道传输到更多命令:
Cat Myfile.txt | 更多
如果您需要在两个终端应用程序之间通过管道传输,那么您应该使用命令行来执行此操作:
myprog1 | myprog2
显然,这是哲学方法,所以如果这没有帮助,那么你能澄清你想管道什么以及你为什么要在这个过程中这样做吗?