我正在从perl运行java应用程序
这是脚本
#!/usr/bin/perl
use strict;
use warnings;
$| = 1;
my $args = join (" " , @ARGV);
my $command = "/usr/java/jdk6/bin/java -jar runner-0.0.1-SNAPSHOT.jar $args";
print "Executing $command\n";
print "Please wait...\n";
print `$command`;
Java应用程序在控制台[STDOUT]中编写调试信息,如果在外部运行命令,即bash,但是当我从perl调用时,它会缓冲调试消息并仅在完成java应用程序时打印。
如何在从perl调用时传输调试消息?
我删除了控制台缓冲区$| = 1
但同样
答案 0 :(得分:5)
将其作为文件句柄打开,并以通常的方式从中读取。
angular-cli\bin
如果您想对输出数据执行非阻塞读取,您可能会发现#!/usr/bin/env perl
use strict;
use warnings;
$| = 1;
my $command = "/usr/java/jdk6/bin/java -jar runner-0.0.1-SNAPSHOT.jar @ARGV";
open ( my $java_output, '|-', $command );
while ( my $line = <$java_output> ) {
print $line;
}
close ( $java_output );
很有用。