6

我目前正在使用 scala 进程 API scala.sys.process,但我似乎无法弄清楚如何优雅地终止对 SIGTERM 信号作出反应的进程。我已经在 python 中完成了它,在这个过程中有漂亮terminatesend_signal功能,但是在 scalascala.sys.process.Process对象上,我看到的只是destroy. 对我来说,看起来 scala 会从轨道上摧毁我的进程,只是为了确定,这不是我想要的。

我怎样才能告诉这个过程它应该清理自己并从我的 scala 代码中退出?

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

编辑

更多细节:我的 scala 进程正在启动一个 C++ 子进程,它监听信号处理程序(SIGTERM、SIGKILL 等)以了解何时退出。它已经过很好的测试,并且可以正确清洁自己。我的问题是我不知道如何从我的 scala 应用程序发送该信号!因此,我的 C++ 进程总是被拖到外面并被枪杀,而不是被要求停止。

4

1 回答 1

3

ScalaProcess的东西基于 Java,因此受到同样的限制。Java 提供了一个非常糟糕的接口。也许它可以在更多系统上使用相同的界面,但它对于那些在 Posix 系统上工作的人来说是难以置信的限制。

于 2012-05-28T16:37:16.643 回答