我有一个主java程序,它应该使用Runtime.exec()在自己的进程中启动其他java程序,例如
Runtime.exec("java -jar myapp.jar");
是否有可能与这个新流程进行通信,例如发送请求、链接字段。。。?
如何关闭这个新创建的进程?我想我得到了一个处理程序,因此可以终止这个过程。但是有更好的方法吗?
如果我终止进程,那么在终止进程之前,shutdownhook还会执行吗?
Runtime.getRuntime().addShutdownHook
是否有可能与此新流程进行通信,例如发送请求、链接字段
您可以通过Runtime.exec
返回的Process
对象与进程进行通信。只需使用Process.getInputStream
/.getOutputStream
。
如果您想调用其他Java进程上的方法,可以查看RMI("远程方法调用")。另一种选择当然是插座。请参阅此相关答案。
没有直接的独立于平台的方式来更改其他Java进程的字段。
如果我终止进程,在终止进程之前是否仍会执行shutdownhook
这取决于你如何杀死它,但通常情况下,是的,关闭挂钩会被执行。