Perl:与交互式流程(IPC)进行通信

时间:2012-09-28 00:17:06

标签: perl process ipc pipe

我正在尝试使用perl交互式程序进行通信。通过交互式我的意思是程序将一些输出放到stdout,然后等待stdin。根据用户在stdin中输入的命令,更多文本输出到stdout,然后继续。我在网上找到了以下示例并尝试修改它:         #!/ usr / bin / perl

    use IPC::Open2; 
    local (*Reader, *Writer); 
    $pid = open2(\*Reader, \*Writer, "./program arg1"); 
    my $text;      

    while (<Reader>) { 
            print $_; 
    } 

    print Writer "n\n"; 

    while (<Reader>) {
            print $_;
    }

    close Writer;
    close Reader;
    waitpid($pid, 0);

程序只是坐在那里,直到我按下CTRL + C才输出任何内容到stdout。更重要的是,第二个阅读器循环不会打印任何内容。我试图模仿用户启动程序,将程序显示的文本打印到perl脚本的标准输出,模拟按“n”键,然后打印更多文本。这只是一个测试,但我真的希望用户使用我的perl脚本能够输入自己的命令。

0 个答案:

没有答案