上記記事の内容をやっている時に発生した問題です。
問題
Process
のOutputStream(= stdin)
に書き込みを行ったところ、時間制限付きでwaitFor
しても終了しなくなりました。
問題の出たコード
// Exceptionのtry-catchは外でやっている想定
Process process = new ProcessBuilder(commands).start();
// stdinへの書き込み
OutputStream os = process.getOutputStream();
os.write(multipartFile.getBytes());
boolean result = process.waitFor(5, TimeUnit.SECONDS);
対処 / 原因
OutputStream
を閉じるようにしたところ解決したため、恐らく延々書き込み待ちするようになったことが原因だと思います。
対処後
// Exceptionのtry-catchは外でやっている想定
Process process = new ProcessBuilder(commands).start();
// stdinへの書き込み
try (OutputStream os = process.getOutputStream()) {
os.write(multipartFile.getBytes());
}
boolean result = process.waitFor(5, TimeUnit.SECONDS);