[英]Handling Java stdout and stderr in Perl
I am trying to run a Java program from my Perl script. 我正在尝试从我的Perl脚本运行Java程序。 I would like to avoid using System.exit(1) and System.exit(-1) commands in Java.
我想避免在Java中使用System.exit(1)和System.exit(-1)命令。 I am however printing to STDOUT and STDERR from Java.
但是我正在从Java打印到STDOUT和STDERR。 In my Perl script, I am reading from Java's stdout and using that line by line output.
在我的Perl脚本中,我正在从Java的stdout中读取并逐行使用该输出。 How do I print stderr and fail if I ever see stderr?
如果看到stderr,如何打印stderr并失败? This is what I have so far:
这是我到目前为止的内容:
my $java_command = ...;
open(DATA, ">$java_command");
while (<DATA>) {
chomp($_);
....
....
}
This has been discussed here: How can I capture STDERR from an external command? 这里已经讨论了这一点: 如何从外部命令捕获STDERR?
So you can do something like: 所以你可以这样做:
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");
}
}
Look at the perl documentation for FAQ How-can-I-capture-STDERR-from-an-external-command . 查看perl文档中的FAQ How-can-I-capture-STDERR-from-external-command 。 This will brief you all the details about capturing and discarding STDOUT and STDERR.
这将向您简要介绍有关捕获和丢弃STDOUT和STDERR的所有详细信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.