我正在使用popen启动java程序。我想在一段时间内运行一个java程序,如果它在超时后仍在运行,则将其终止。我一直在使用提供的here答案,它使用popen.terminate()和thread.join()。似乎python方法已经结束但java进程仍在运行。请帮忙。我使用的是Python 2.7。
答案 0 :(得分:0)
如果您使用的是现代(最近5年)版本的Linux,您应该能够使用timeout命令:
示例 - 这将持续10秒:
$ sleep 10
这将持续1秒钟:
$ timeout 1 sleep 10
以下是在Python中使用它的示例:
p1 = Popen(['timeout' '1' 'sleep' '10'], stdout=PIPE)
您可以通过检查值124
的返回代码来判断程序是否过早退出,否则退出代码是您运行的java程序的代码。还有其他参数,例如您要发送的终止信号的类型等。请使用man timeout
查看更多信息。