2010-08-16 61 views
2

我有一個可執行文件從STDIN讀取,輸出到STDOUT。我用什麼從STDIN讀取/寫入STDOUT的子進程?

我需要一個Perl腳本,它將這個可執行文件作爲一個子進行分叉,並寫入該子進程的STDIN並從STDOUT中讀取。

這是Windows所必需的。任何想法或建議?

回答

2

規定的解決方案是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

相關問題