如何优雅地终止从scala创建的进程

时间:2012-05-28 01:41:15

标签: scala

我目前正在使用scala进程API scala.sys.process,但我似乎无法弄清楚如何正常终止对SIGTERM信号做出反应的进程。我已经在python中完成了之前,在进程上有非常terminatesend_signal函数,但在scala scala.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 ++过程总是被拖到外面拍摄而不是被要求停止。

1 个答案:

答案 0 :(得分:3)

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