2012-03-04 54 views
2

私はSystem.exit(0);を実行して、すぐにカーネルパニックなどで同じアプリケーションを再起動する必要がある場合があります。しかし、私がSystem.exit(0)を呼び出すと、まずexec()をどのように呼び出すのですか? linuxのように私はBASHと一緒に作業しました。Java - 自分自身を閉じて自分のソフトウェアカーネルパニックなどの自分自身を再起動するにはどうすればいいですか?

#!/bin/bash 
pkill java; 
sleep 1; 
java -cp /var/tmp/dist/Kernel.jar main.Kernel 

Main.java:Tanuki Service Wrapper

/* Windows platform running */ 
public class Main { 
    public static void main(String[] args) 
    { 
    // other activity happening.... for ages 

    // 
    // Suddently there will be a kernel panic it is better to do a software reboot 
    // remotely 
    // 
    } 

    public static rebootSoftwareKernel() 
    { 
    System.exit(0); // Exit completely 
    Runtime.getRuntime().exec(MyConstant.RunItSelfSoftReboot()); // Restart this same 
    } 
} 
+1

exitを呼び出す前にリブートを実行できますか?すぐに古いプロセスをシャットダウンする前に新しいプロセスを起動することは可能ですか?また、pkillが最善の選択肢ですか?他のJavaプロセスが実行中の場合はどうなりますか? – jmort253

+0

私は 'exec()を呼び出します。 System.exit(0); 'それは同期していません。 execは同じアクティブなインスタンスを実行しているため、複製することはできません。だから失敗する。 – YumYumYum

答えて

0

ルック。他の機能の中でも、必要に応じてJVMを再起動することができます。

関連する問題