【问题标题】:Writing into a pipe in perl在 perl 中写入管道
【发布时间】:2013-03-09 06:55:23
【问题描述】:

我正在使用管道通过 Perl 脚本将命令传递给某个应用程序。 所以我在管道上写命令。但我的问题是管道没有等到命令执行从应用程序端结束,它需要下一个命令。因此,在命令执行结束之前,它不会阻塞输入。我需要我的 Perl 脚本像 UNIX shell 一样工作。但它就像进程在后台运行一样发生。我使用 readling 来读取输入。

#!/usr/bin/perl -w

use strict;
use Term::ReadLine;

open (GP, "|/usr/bin/gnuplot -noraise") or die "no gnuplot";
use FileHandle;
GP->autoflush(1);
# define readline
$term = new Term::ReadLine 'ProgramName';
while (defined( $_ = $term->readline('plot>'))) {
    printf GP ("$_\n");
}
close(GP);

【问题讨论】:

  • 我猜,每次发送命令后必须关闭管道。不过不确定。
  • 请我不要关闭管道,但它应该等到执行结束。
  • 试试IPC::Open3

标签: perl pipe


【解决方案1】:

我建议使用具体的 CPAN 模块,例如 Chart::Gnuplot,这样您就可以进行高级别的控制

【讨论】:

  • 对不起,GNUPLOT 就是一个例子。应用程序可能是其他东西,执行每个命令需要几秒钟。并且管道应连续打开。整个操作结束后,管道将关闭。问题是它需要输入,而不是等待应用程序的执行。请帮忙。
猜你喜欢
  • 2012-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-23
  • 1970-01-01
相关资源
最近更新 更多