我们有一个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
getErrorStream不读取错误流,它只是获取它的句柄.因为它是一个管道,如果你从未真正读过它,它将填满并强制Perl程序阻止.
你需要这样的东西:
Inputstream errors = getErrorStream(); while (errors.read(buffer) > 0) { SOP buffer; }