У нас есть программа Perl для проверки XML, который вызывается из программы Java. Он не может писать стандартную ошибку и висит в месте печати.Почему моя программа Java не читает STDERR от Perl?
Perl записывает в STDERR, а программа java считывает STDERR с помощью функции getErrorStream(). Но программа Perl навешивается для записи в STDERR. Я подозреваю, что функция Java полностью блокирует поток STDERR, и Perl ожидает, пока этот поток будет выпущен.
Есть ли способ в Perl преодолеть эту блокировку и написать стандартную ошибку? Поскольку Java делает только чтение, API не должен блокировать поток STDERR в соответствии с java-документом.
Perl фрагмент кода:
sub print_error
{
print STDERR shift;
}
Java фрагмент кода:
while (getErrorStream() != null)
{
SOP errorMessage;
}
Цените помощь заранее.
Спасибо, Mathew Liju
Perl не будет зависать из-за буферизации, если он не ожидает ответа Java. С буферизацией Java увидит выход в конце концов, даже если это произойдет только тогда, когда выйдет Perl. Perl висит, потому что Java никогда не читает свой вывод – 2008-12-10 12:48:46