当前位置:  开发笔记 > 编程语言 > 正文

为什么我的Java程序不能读取Perl的STDERR?

如何解决《为什么我的Java程序不能读取Perl的STDERR?》经验,为你挑选了1个好方法。

我们有一个Perl程序来验证从Java程序调用的XML.它无法写入标准错误并挂在打印位置.

Perl正在写入STDERR,java程序正在使用getErrorStream()函数读取STDERR.但是Perl程序暂时写入STDERR.我怀疑Java函数完全阻塞了STDERR流,Perl正在等待这个流被释放.

在Perl中是否有办法克服这种阻塞并强行写入标准错误?由于Java只进行读取,因此API不应该按照java doc锁定STDERR流.

Perl Code代码段是:

sub print_error
{
    print STDERR shift;
}

Java代码段是:

while ( getErrorStream() != null )
{
    SOP errorMessage;
}

提前感谢您的帮助.

谢谢,Mathew Liju



1> Adrian Pronk..:

getErrorStream不读取错误流,它只是获取它的句柄.因为它是一个管道,如果你从未真正读过它,它将填满并强制Perl程序阻止.

你需要这样的东西:

Inputstream errors = getErrorStream();
while (errors.read(buffer) > 0) {
    SOP buffer;
}

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有