6

現在、scala プロセス API を使用していますが、SIGTERM シグナルに反応するプロセスを正常に終了する方法scala.sys.processがわかりません。プロセスにかなりと関数がある前にPythonでそれをやったことがありますが、スカラオブジェクトでは、私が見るのは. 私には、確かに、scalaが私のプロセスを軌道から破壊するように見えますが、それは私が望んでいることではありません。terminatesend_signalscala.sys.process.Processdestroy

このプロセスに、自分自身をクリーンアップして scala コードから終了するように指示するにはどうすればよいですか?

val launcher = Process("myprocess", Seq("args"))
val process = launcher.run()
process.destroy() //Err... no? terminate or equivalent like in python please?

編集

詳細について: 私の scala プロセスは、いつ終了するかを知るためにシグナル ハンドラー (SIGTERM、SIGKILL など) をリッスンする C++ サブプロセスを起動しています。十分にテストされており、正しくクリーニングされます。私の問題は、scala アプリケーションからそのシグナルを送信する方法がわからないことです! したがって、私の C++ プロセスは、単に停止するように求められるのではなく、常に外に引きずり出されて撃たれます。

4

1 に答える 1

3

ScalaProcessは Java に基づいているため、同じ制限を受けます。Java のインターフェースは非常に貧弱です。おそらくそれにより、より多くのシステムで同じインターフェースを使用できるようになりますが、Posix システムで作業している人には信じられないほど制限されています。

于 2012-05-28T16:37:16.643 に答える