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