- PR -

プロセスの起動停止

1
投稿者投稿内容
kon
会議室デビュー日: 2003/03/05
投稿数: 5
投稿日時: 2003-09-24 00:14
LinuxのTomcat上でJavaのプロセスを新規にRuntime.exe()で起動し、終了したいのですが、Tomcatのサーバープロセスとは独立した形で稼動させ、その後サーバーからプロセスを停止する方法はkillコマンドでプロセスを強制終了させています。しかし、あくまで強制終了なので終了処理ができません、正常終了のさせ方はJavaにはないのでしょうか。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2003-09-24 00:39
unibon です。こんにちわ。

引用:

konさんの書き込み (2003-09-24 00:14) より:
LinuxのTomcat上でJavaのプロセスを新規にRuntime.exe()で起動し、終了したいのですが、Tomcatのサーバープロセスとは独立した形で稼動させ、その後サーバーからプロセスを停止する方法はkillコマンドでプロセスを強制終了させています。しかし、あくまで強制終了なので終了処理ができません、正常終了のさせ方はJavaにはないのでしょうか。


なんらかのプロセス間通信(IPC)を使うことになると思いますが、
最も簡単なのはパイプでしょう。
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/Process.html#getOutputStream()
で、Java からそのプロセスへ「終了しろ」と送って、
そのプロセスがそれを受け取ったら自分で終了処理を伴った終了をするようにする、
みたいな感じでできそうです(が、自分では試したことはないです)。
これ以外のやりかただと、とたんに難しくなりそうな気がします。
佐々木
大ベテラン
会議室デビュー日: 2003/03/30
投稿数: 121
投稿日時: 2003-09-26 01:08
引用:

konさんの書き込み (2003-09-24 00:14) より:
LinuxのTomcat上でJavaのプロセスを新規にRuntime.exe()で起動し、終了したいのですが、Tomcatのサーバープロセスとは独立した形で稼動させ、その後サーバーからプロセスを停止する方法はkillコマンドでプロセスを強制終了させています。しかし、あくまで強制終了なので終了処理ができません、正常終了のさせ方はJavaにはないのでしょうか。


java.lang.Runtime#addShutdownHook(Thread)
というのがありますよ。

もちろんSIGKILLを食らったときはダメですが。
1

スキルアップ/キャリアアップ(JOB@IT)