首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Java STDOUT流到perl STDOUT

将Java STDOUT流到perl STDOUT
EN

Stack Overflow用户
提问于 2016-11-11 14:12:00
回答 1查看 78关注 0票数 1

我正在从perl运行一个java应用程序。

这是剧本

代码语言:javascript
复制
#!/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,但还是一样的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-11 14:21:05

以文件句柄的形式打开它,并按通常的方式读取。

代码语言:javascript
复制
#!/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很有用。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40549783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档