16

JVM内からPOSIXシグナルを送信するにはどうすればよいですか?(JavaまたはClojureの場合)

グーグルで試してみるまで、これが問題になるとは思っていませんでした。信号の処理に関する情報はたくさんありますが、信号の送信については何もありません。

JNIを使​​用するか、シェルを呼び出して「kill」を実行する以外に、PIDにシグナルを送信する他の方法はありますか?

4

2 に答える 2

9

Ok。自分自身に答える:提案されたライブラリを調べましたが、特にその一部のみを使用する場合は、多くのコードに新しい依存関係を導入することに注意しています。

最も簡単な方法は、JNAを使用し、システム(libc)APIとインターフェースすることです。clojureでは、これは次のようになります。

(jna-Integer kill pid signoを呼び出します)

もちろん(:use net.n01se.clojure-jna)を実行した後。

このソフトウェアはWindowsでの実行を目的としていないため、すべてのPOSIXシステムで動作するこのソリューションで問題ありません(MacOSとLinuxが私が興味を持っているものです)。

于 2010-06-30T10:53:21.210 に答える
5

POSIXシグナルはOS固有の機能ですが、JVMはOSに依存しないVMになるように試みられています。したがって、このための標準機能はありません。

ただし、シェルコマンドを実行することも(ランタイムクラスを使用して)、必要に応じてPosixforJavaなどのライブラリを使用することもできます

于 2010-06-30T09:56:50.007 に答える