我用什么从STDIN读取/写入STDOUT的子进程?

问题描述:

我有一个可执行文件从STDIN读取,输出到STDOUT。我用什么从STDIN读取/写入STDOUT的子进程?

我需要一个Perl脚本,它将这个可执行文件作为一个子进行分叉,并写入该子进程的STDIN并从STDOUT中读取。

这是Windows所必需的。任何想法或建议?

+2

'perldoc -q'应该被广告更多。 – Dummy00001 2010-08-16 21:40:13

规定的解决方案是IPC::Open2模块,但下面的代码可能会挂在Windows上。

#! /usr/bin/perl 

use warnings; 
use strict; 

use IPC::Open2; 

my $pid = open2 my $out, my $in, "./myfilter.exe"; 
die "$0: open2: $!" unless defined $pid; 

print $in "$_\n" for qw/ foo bar baz /; 
close $in or warn "$0: close: $!"; 

while (<$out>) { 
    chomp; 
    print "Parent: [$_]\n"; 
} 

close $out or warn "$0: close: $!"; 
+0

似乎有适用于Windows没有清晰的解决方案。 – Avinash 2010-08-16 17:15:32