同じディレクトリで perl スクリプトを呼び出す tcsh スクリプトを呼び出す Java アプリケーションがあります。「runPerlScript.sh」と入力してコマンドからこのスクリプトを実行すると、完全に正常に動作し、必要に応じていくつかの出力ファイルが生成されます。ただし、次のコードを使用して Java からスクリプトを呼び出す場合:
String[] runCmd = {"/bin/tcsh","-c","/filepath/runPerlScript.sh"};
Process run = Runtime.getRuntime().exec(runCmd);
BufferedReader reader = new BufferedReader(new InputStreamReader(run.getInputStream()));
String line = "";
line = reader.readLine();
System.out.println("\nStarting while.");
while((line)!=null){
System.out.println("Output from script: "+line);
line=reader.readLine();
}
reader.close();
System.out.println("Finished running perl script.");
シェルスクリプトからコンソールにエコーステートメントを出力します (私は NetBeans を使用しています) が、生成される出力ファイルは 4 つだけです (通常は 50 近く生成される場合)。これらの 4 つのファイルが生成された後、「runPerlScript.sh の実行が終了しました」というシェル スクリプトの echo ステートメントがコンソールに出力されるため、プロセスが早期に終了しているように見えます。ProcessBuilder など、このスクリプトを実行する方法をいくつか試しましたが、出力ファイルを生成する方法はないようです。上記のコードは、ProcessBuilder でハングアップが発生したため、実際に任意の出力を生成できる唯一の方法でした。スクリプトを継続的に実行する方法を知っている人はいますか?