【发布时间】:2011-05-13 07:25:37
【问题描述】:
我有一个运行另一个 (Python) 程序作为进程的 java 程序。
Process p = Runtime.getRuntime().exec("program.py", envp);
如果java程序完成处理,Python进程也完成。 finish 命令向 Python 进程发送信号以关闭它。
正常情况下进程是这样关闭的:
BufferedWriter output = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
output.write("@EOF\n");
output.flush();
但是,当java程序崩溃时,进程并没有关闭。由于崩溃,关闭命令未发送。每次程序终止时是否可以自动终止进程?
【问题讨论】:
-
我其实也对这个问题的答案很感兴趣。虽然我不能提供,但您介意分享一下您的 Java 程序崩溃的原因吗?
-
为了回答这个问题,您需要提供更多信息。例如:您是否可以随意修改 Java 和 Python 程序中的一个或两个的源代码?
-
我不得不不同意 Vinay(哈哈,同名)。实际上,我现在正在查找它,但我认为仅在当前 Java 进程 ID 运行时运行该 python 进程的方法可以解决问题。不确定我是否走在正确的道路上,但这个问题确实让我很感兴趣。
-
程序崩溃是因为它正在开发中,我希望最终版本不会崩溃;-) 但是,当我测试程序并且它崩溃时,我必须手动终止子进程,什么是相当烦人的;-)
-
哈哈,我就是这么想的。我可能会在路上遇到类似的情况,所以我真的很想弄清楚这一点。尝试同时查找一个 while(PID) 循环。这是一场比赛。 ;-)
标签: java python runtime.exec