私は/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のサイズを変更するだけだと思っていましたが、役に立ちませんでした。これを引き起こしているものについての手がかりはありますか?必要に応じて追加情報を提供します。ありがとう。