2016-05-18 65 views
0

我有一個名爲「prog.py」的python腳本。我想添加一個功能來打開一個監視當前腳本操作的新進程。腳本終止時,進程會識別終止,然後調用某個函數。這是一個僞代碼:在主進程結束後啓動的Python中創建一個進程

while (script is active):  

    sleep(1) # check its status once a second 

func() 

你知道該怎麼做嗎?

回答

1

是否有其他過程需要首先啓動的原因?看起來好像你可以在第一個過程完成時更高效和可靠地完成execing。例如:

import atexit 
import os 

atexit.register(os.execlp, 'afterexitscript.py', 'afterexitscript.py', 'arg1', 'arg2') 

在當前的Python程序退出時,它會無縫地與其他腳本,它不需要去包括輪詢循環的麻煩替換本身。或者您可以使用atexit來執行任何func直接在您的主腳本中,並避免新的Python啓動。

+0

+1爲最後一句。只要使用'atexit',並且不要打擾進程,除非有必要的特定原因。 –

+0

在atexit文檔中存在以下問題: 「當通過未由Python處理的信號終止程序時,當檢測到Python致命內部錯誤或os._exit () 叫做。」 我正在尋找一種解決方案,可以在任何情況下終止腳本... – CrazySynthax

+0

@CrazySynthax:在這種情況下,監視器進程管理「主要」進程仍然更簡單,而不是「主要「進程產生一個監視器,然後試圖依次監視主進程。前者是對「子進程」的簡單使用,後者涉及一般不可移植的操作系統特定進程分離步驟和嚴重問題。 – ShadowRanger

相關問題