我正在从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`;如果在consoleSTDOUT外部运行命令(即bash ),Java应用程序会在中写入调试信息,但是当我从perl调用时,它只在完成java应用程序时缓冲调试消息并打印。
如何从perl调用调试消息?
我拆开了控制台缓冲区$| = 1,但还是一样的
发布于 2016-11-11 14:21:05
以文件句柄的形式打开它,并按通常的方式读取。
#!/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 ); 如果您也想对输出数据进行非阻塞读取,您可能会发现IO::Select很有用。
https://stackoverflow.com/questions/40549783
复制相似问题