我有一个Java应用程序,它创建了一个外部进程并通过InputStream读取该进程的stdout。当我完成时,我需要能够终止该进程。是否有一种方法向此进程发送SIGINT信号?(就像我从控制台按Ctrl+C那样)。
外部进程不是我的代码,我不能修改它。
外部进程不是我的代码,我不能修改它。
如果你知道进程的ID,你可以发送kill -SIGINT <pid>
到该进程:
Runtime.getRuntime().exec("kill -SIGINT 12345");
当然,这将导致一个与平台相关的解决方案... 可能,您将能够使用此工具,尽管它处于“沙箱模式”。但是它可能会给您一个想法:
http://commons.apache.org/sandbox/runtime/
另请参阅这里的相关问题:
如果您想向当前进程(也称为JVM)发送信号,可以使用 sun.misc.Signal.raise()
方法。我个人需要它是因为我正在使用一个JNI库。
你是否将外部程序作为java.lang.Process
运行?因为Process类有一个destroy()
方法。