我想盡可能快地重複執行一個子進程。但是,有時這個過程需要很長時間,所以我想殺死它。 我用signal.signal(...)象下面這樣:超時時殺死或終止子進程?
ppid=pipeexe.pid
signal.signal(signal.SIGALRM, stop_handler)
signal.alarm(1)
.....
def stop_handler(signal, frame):
print 'Stop test'+testdir+'for time out'
if(pipeexe.poll()==None and hasattr(signal, "SIGKILL")):
os.kill(ppid, signal.SIGKILL)
return False
但有時這些代碼會試圖停止執行下一輪。 停止測試/ home/lu/workspace/152/treefit/test2超時 /bin/sh:/ home/lu/workspace/153/squib_driver:找不到---這是下一次執行;該程序錯誤地停止它。
有誰知道如何解決這個問題?我想在時間停止不執行1秒的時間。睡眠(n)經常等待n秒。我不希望我希望它可以執行少於1秒
所以基本上如果子進程運行超過1秒,你想殺了它並開始下一個?它是否正確? – 2010-11-11 20:06:28
你如何創建你的子過程?因爲它看起來像表達式__ pid = pipeexe.pid__正在獲取將要運行的下一個子進程! – mouad 2010-11-11 21:03:33
所以基本上如果子進程運行超過1秒,你想殺了它並開始下一個?它是否正確?是的,這是正確的 – user504909 2010-11-11 23:31:53