Java Runtime.exec通信可能吗?

时间:2014-10-06 21:28:00

标签: java process runtime.exec

我有一个主java程序,应该使用Runtime.exec()在自己的进程中启动其他java程序,例如。

Runtime.exec("java -jar myapp.jar");

是否有可能与此新流程进行通信,例如发送请求,追逐领域......?

如何关闭这个新创建的进程?我想我得到了一个处理程序,因此可以杀死进程。但是有更好的方法吗?

如果我终止进程,那么在进程被终止之前是否还会执行shutdownhook?

Runtime.getRuntime().addShutdownHook

1 个答案:

答案 0 :(得分:1)

  

是否有可能与此新流程进行通信,例如发送请求,追逐字段......?

您可以通过Process返回的Runtime.exec对象与流程进行通信。只需使用Process.getInputStream / .getOutputStream

如果要在其他Java进程上调用方法,可以查看RMI(“远程方法调用”)。另一种选择当然是套接字。请参阅this related answer

没有直接的平台独立方式来改变其他Java进程的字段。

  

如果我终止进程,那么在进程被终止之前仍然会执行shutdownhook吗?

取决于你如何杀死它,但通常,是的,将执行关闭钩子。