2010-09-23 41 views
3

我遵循answer中有關編寫用作服務的Python腳本的說明。我把我的循環代碼放在def main()如何使Python腳本(作爲服務安裝)在註銷後生存下來?

我安裝了服務python my_script.py install。我能夠在Windows XP中通過services.msc啓動和停止服務。

這是一個日誌程序,只要Windows正在運行,就會寫入日誌。它不應該關心誰或是否有人登錄或註銷。我的問題是當我註銷時,服務將停止。我如何使它能夠在註銷後生存下來?

回答

2

當用戶關閉控制檯,註銷或關閉系統時,系統會生成CTRL_CLOSE_EVENT,CTRL_LOGOFF_EVENT和CTRL_SHUTDOWN_EVENT信號,以便進程在終止前有機會進行清理。爲確保您從所有這一切脫離你的服務,你需要使用控制處理程序設置這種方式:

win32api.SetConsoleCtrlHandler(lambda x: True, True) 

退房:http://msdn.microsoft.com/en-us/library/ms685049(v=VS.85).aspx

剛查出來有食譜,說明了這一點非常適合你。

+0

應該在哪裏這條線進來嗎?我是否正確地說它應該在這個[code snippet]中的類__init__中(http://stackoverflow.com/questions/32404/can-i-run-a-python-script-as-a-服務的窗口,如何/ 32440#32440)? – Kit 2010-09-24 01:03:34

+0

@Kit:看到我上面編輯的答案。我剛纔看到有一個python配方可以幫助你解決所有這些問題。 – pyfunc 2010-09-24 02:16:21