【问题标题】:Handling Java stdout and stderr in Perl在 Perl 中处理 Java 标准输出和标准错误
【发布时间】:2010-04-27 03:57:35
【问题描述】:

我正在尝试从我的 Perl 脚本运行 Java 程序。我想避免在 Java 中使用 System.exit(1) 和 System.exit(-1) 命令。但是,我正在从 Java 打印到 STDOUT 和 STDERR。在我的 Perl 脚本中,我正在读取 Java 的标准输出并使用该输出。如果我看到 stderr,如何打印 stderr 并失败?这是我目前所拥有的:

my $java_command = ...;
open(DATA, ">$java_command"); 
while (<DATA>) {
    chomp($_);
    ....
    ....
}

【问题讨论】:

    标签: java perl


    【解决方案1】:

    查看常见问题解答How-can-I-capture-STDERR-from-an-external-command 的 perl 文档。这将向您简要介绍有关捕获和丢弃 STDOUT 和 STDERR 的所有详细信息。

    【讨论】:

      【解决方案2】:

      这里已经讨论过了:How can I capture STDERR from an external command?

      所以你可以这样做:

      open (DATA, "($java_command_with_args | sed 's/^/STDOUT:/') 2>&1 |");
      while (<DATA>) {
          if (s/^STDOUT://)  {
              print "line from stdout: ", $_;
          } else {
      
              print "line from stderr: ", $_;
              die("Saw something on stderr");
          }
      }
      

      【讨论】:

        最近更新 更多