1

Runtime.getRuntime().execJavaで使用してLinuxターミナルでshファイルを呼び出す方法は?

Javaコードから新しい端末でshファイルを呼び出したいです。ターミナルでのみ実行すると、別のプロセスとして実行され、プログラムが終了しても閉じられません。を使用していないのはそのためですProcessBuilder。これは、それを使用しているプログラムが終了すると、それによって呼び出されたプロセスを停止します。

4

3 に答える 3

0

スクリプトが実行可能 ( ) としてマークされている場合chmod +x script.shは、 で呼び出すことができますexec("./script.sh")。それ以外の場合は、 を使用して直接呼び出すことができますexec("sh script.sh")

于 2013-07-25T12:57:44.303 に答える
0

ProcessBuilderは の単なる薄いラッパーであるためRuntime、直接使用しても目的は達成されません。

代わりに、ターミナル ウィンドウをバックグラウンド プロセスとして作成し、このプロセスを切り離す 2 つ目のスクリプトを作成する必要があります。一般的方法:

  1. ProcessBuilder外部スクリプトを開始する
  2. 外側のスクリプトは、Linux コマンドnohup(1)を使用して、内側のスクリプトの分離プロセスを作成します。例: `nohup xterm -e /bin/bash "script.sh &"

nohup新しい X 端末と Java プロセスの間の接続を切断します。&すべてをバックグラウンドに送信するため、コマンドは終了するまで送信されませんxterm

于 2013-07-25T13:02:02.637 に答える
0

使用する:

Runtime.getRuntime().exec(new String[] { "/bin/bash", "-c", "sh myfile.sh" });
于 2013-07-25T13:01:57.403 に答える