2011-03-01 10 views
2

Javaの内部から外部プログラムを起動および停止できるようにする必要があります。私はうまく動作し始めているが、私はそれを停止すると、それはその親を殺す。私が始めているプロセスは、プロセスグループ全体をkill 0で殺していることが判明しています。誰かが、自分のJavaプロセスが子プログラムのプロセスグループにないようにする方法を知っていますか?Runtime.getRuntime()。execプロセスのプロセスグループを変更する

1)は新しいプロセスグループのグループリーダーとして、あなたの子プロセスを作成します。

+0

デーモンにしてください。 –

+0

@ムラリVP:それは答えの答えとして投稿している場合。 – EJP

答えて

2

は、だから私は2つの答えがあると思います。

ps -efj 
:Linuxでは、私はその後、新しいプロセスのプロセス・グループを使用すると、コマンドを使用してコマンドをで走ったの端末とは異なることを確認することができます

bash -c "command <args>" 

を使用して、コマンドライン上でこれを行うことができます

'j'オプションは、プロセスグループID(PGID)を示します。

'-c'オプションを指定して 'bash'コマンドに渡す引数を持つコマンドには引用符が必要なので、Javaから正常に動作するようにするためには、変なところからエスケープする必要があるかもしれないことを警告します。ですから、Javaでは、次のようになります。

2)プロセスグループ内のすべてのものを削除しないように、子プロセスを変更します。