我们有一个 Perl 程序来验证从 Java 程序调用的 XML。它无法写入标准错误并卡在打印位置。
Perl 正在写入 STDERR,Java 程序正在使用 getErrorStream() 函数读取 STDERR。但是 Perl 程序正在挂起以写入 STDERR。我怀疑 Java 函数完全阻塞了 STDERR 流,而 Perl 正在等待这个流被释放。
在 Perl 中有没有办法克服这个障碍并强制写入标准错误?由于 Java 仅执行读取操作,因此 API 不应根据 Java 文档锁定 STDERR 流。
Perl 代码片段是:
sub print_error
{
print STDERR shift;
}
Java 代码片段是:
while ( getErrorStream() != null )
{
SOP errorMessage;
}
提前感谢您的帮助。
谢谢, 马修·李菊
最佳答案
getErrorStream 不会读取 错误流,它只是获取错误流的句柄。由于它是一个管道,如果您从未真正读取过它,它将被填满并强制 Perl 程序阻塞。
你需要这样的东西:
Inputstream errors = getErrorStream();
while (errors.read(buffer) > 0) {
SOP buffer;
}
关于java - 为什么我的 Java 程序不能读取 Perl 的 STDERR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/355311/