Python:在超时后终止运行Java程序的进程

0 投票
1 回答
537 浏览
提问于 2025-04-18 09:04

我正在用popen启动一个Java程序。我想让这个Java程序运行一段时间,如果超时了还在运行,就把它杀掉。我之前参考了这里的一个答案,里面提到用popen.terminate()和thread.join()。看起来Python的方法是结束了,但Java进程还是在继续运行。请帮帮我。我用的是Python 2.7。

1 个回答

0

如果你使用的是最近五年内的现代Linux版本,你应该可以使用timeout命令:

举个例子 - 这个命令会运行10秒:

$ sleep 10 

这个命令会运行1秒:

$ timeout 1 sleep 10

这里有一个在Python中使用这个命令的例子:

p1 = Popen(['timeout' '1' 'sleep' '10'], stdout=PIPE)

你可以通过检查返回代码来判断程序是否提前退出,如果返回值是124,说明程序是因为超时而退出的;否则,返回的代码就是你运行的Java程序的退出代码。还有其他参数,比如你想发送的终止信号类型等等。想了解更多,可以使用man timeout命令。

撰写回答