我目前正在使用scala进程API scala.sys.process
,但我似乎无法弄清楚如何正常终止对SIGTERM信号做出反应的进程。我已经在python中完成了之前,在进程上有非常terminate
和send_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 ++过程总是被拖到外面拍摄而不是被要求停止。
答案 0 :(得分:3)
Scala Process
内容基于Java,因此受到相同的限制。 Java提供了一个非常糟糕的接口。也许它可以在更多系统上使用相同的界面,但它对那些在Posix系统上工作的人来说是非常有限的。