我想在Perl(在Linux上运行)中建立一个流程管道,包括在不同时间运行的两个部分.
例如:
启动消费者流程:
open( OUT, "| tar xvf - " ) || die "Failed: tar: $!";
然后很久以后开始制作过程:
open( IN, "gpg -d $file |" ) || die "Failed: gpg: $!";
但然后以某种方式将gpg的输出重定向到tar的输入.
我可以通过构建一个循环来做到这一点:
while () { print OUT; }
但我想知道我是否可以通过重定向将两个进程粘合在一起.
加
pipe( IN, OUT );
在两个公开声明之前.而已!
如果你想做更复杂的事情,我会推荐IPC :: Run CPAN模块:
http://search.cpan.org/dist/IPC-Run/
它允许您启动进程,将输入和输出绑定在一起,并在链中的任何位置添加日志记录或重定向.