![](/img/trans.png)
[英]BufferedReader.readLine() hangs when connection forcefully disconnected
[英]BufferedReader.readline() hangs
我正在嘗試用我的程序運行/usr/bin/perl -e 'for(my $i=0;$i<1000;$i++){print 1x1000;print STDERR 2x1000;}'
(在終端中工作) 。
ProcessBuilder pb = new ProcessBuilder(go); //go is the command
process = pb.start();
BufferedReader incommandbuf = new BufferedReader(new InputStreamReader(process.getInputStream()),1024*1000);
BufferedReader errcommandbuf = new BufferedReader(new InputStreamReader(process.getErrorStream()),1024*1000);
stdString = "";
while ((line = incommandbuf.readLine()) != null)
{
stdString += line + "\n";
}
String errorstrtemp = "";
while ((line = errcommandbuf.readLine()) != null)
{
errorstrtemp += line + "\n";
}
如果我嘗試運行此程序,則它會在while ((line = incommandbuf.readLine()) != null)
時掛起。 如果我將命令更改為/usr/bin/perl -e 'for(my $i=0;$i<64;$i++){print 1x1000;print STDERR 2x1000;}'
。 如果上升到65或更高,則不起作用。 起初,我以為我只需要更改BufferedReaders的大小即可,但無濟於事。 關於什么原因的任何線索? 如果需要,我將提供任何其他信息。 謝謝。
您一次正在讀取一個流。 當另一個流填滿緩沖區時,您的進程將停止等待您讀取它。 解決方案是讀取不同線程中的流或使用ProcessBuilder.redirectErrorStream
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.