私は小さなプログラムのリスタータを構築しています。
基本的な考え方は、を使用してプロセスを実行しRuntime.getRuntime().exec
、プログラム自体を実行してから実行することですSystem.exit(0);
これは再起動を行うコードです:
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
try {
Runtime.getRuntime().exec(strList);
} catch (IOException e) {
e.printStackTrace();
}
}
});
// exit
System.exit(0);
次のようなものはどこstrList
にありますか:String[]
{"/bin/bash","-c","java -jar path/to.jar"}
OS の移植性について心配する必要はありません。プログラムは Ubuntu でのみ実行されます。
プログラムが正常に再起動するか、少なくとも新しいプロセスが実行されています (そして、しばらくしてから再起動し続けます)
問題は、再起動後にコンソールが失われることです。そのため、プログラムで実際に何が起こっているのかわかりません。
「同じウィンドウ」で新しいプロセスを開始する方法、またはそれにアクセスする方法はありますか (おそらく画面を使用して?)?