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

Lau*_*Roy 6 scala

我目前正在使用scala进程API scala.sys.process但是,我似乎无法弄清楚如何优雅地终止对SIGTERM信号做出反应的进程.我已经做到了在Python那里有漂亮之前terminatesend_signal功能上的过程,但上阶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?
Run Code Online (Sandbox Code Playgroud)

编辑

有关更多详细信息:我的scala进程正在启动C++子进程,该进程侦听信号处理程序(SIGTERM,SIGKILL等)以了解何时退出.它经过了很好的测试,并且可以正确清洁.我的问题是我不知道如何从我的scala应用程序发送该信号!因此,我的C++过程总是被拖到外面拍摄而不是被要求停止.

Dan*_*ral 3

Scala 的Process东西是基于 Java 的,因此也受到同样的限制。Java 提供的接口非常差。也许它使得在更多系统上使用相同的接口成为可能,但是对于那些在 Posix 系统上工作的人来说它是令人难以置信的限制。