Python進程的守護進程實施方案的詳細介紹
Python進程這一計算機語言在實際的應用中,如果你在實際應用的過程中遇到相關問題,你就可以通過以下的文章對其的實際應用有較為詳細的介紹,以下是文章的具體介紹,希望你會有所收獲。
Python進程
更多相關推薦 守護進程:通常被定義為一個后臺進程,而且它不屬于任何一個終端會話(terminal session)。許多系統服務由守護程序實施;如網絡服務,打印等。 下面是轉自一位網友寫的編寫守護進程的步驟:
1. 調用fork()以便父進程可以退出,Python進程這樣就將控制權歸還給運行你程序的 命令行或shell程序。需要這一步以便保證新進程不是一個進程組頭領進程(process group leader)。下一步,‘setsid()’,會因為你是進程組頭領進程而失敗。
2. 調用‘setsid()’ 以便成為一個進程組和會話組的頭領進程。由于一個控制終端 與一個會話相關聯,而且這個新會話還沒有獲得一個控制終端,我們的進程沒 有控制終端,這對于守護程序來說是一件好事。#t#
3. 再次調用‘fork()’所以父進程(會話組頭領進程)可以退出。這意味著我們,一 個非會話組頭領進程永遠不能重新獲得控制終端。
4. 調用‘chdir("/")’確認我們的進程不保持任何目錄于使用狀態。不做這個會導 致系統管理員不能卸裝(umount)一個文件系統,因為它是我們的當前工作目錄。 [類似的,我們可以改變當前目錄至對于守護程序運行重要的文件所在目錄]
5. 調用‘umask(0)’以便我們擁有對于我們寫的任何東西的完全控制。我們不知 道我們繼承了什么樣的umask。 [這一步是可選的](譯者注:這里指步驟5,因為守護程序不一定需要寫文件)
6. 調用‘close()’關閉文件描述符0,1和2。這樣我們釋放了從父進程繼承的標 準輸入,標準輸出,和標準錯誤輸出。我們沒辦法知道這些Python進程文描述符符可能 已經被重定向去哪里。注意到許多守護程序使用‘sysconf()’來確認 ‘_SC_OPEN_MAX’的限制。‘_SC_OPEN_MAX’告訴你每個進程能夠打 開的最多文件數。
然后使用一個循環,守護程序可以關閉所有可能的文件描 述符。你必須決定你需要做這個或不做。如果你認為有可能有打開的文件描 述符,你需要關閉它們,因為系統有一個同時打開文件數的限制。
7. 為標準輸入,標準輸出和標準錯誤輸出建立新的文件描述符。即使你不打算,使用它們,打開著它們不失為一個好主意。準確操作這些描述符是基于各自 愛好;比如說,如果你有一個日志文件,你可能希望把它作為標準輸出和標 準錯誤輸出打開,而把‘/dev/null’作為標準輸入打開;
作為替代方法,你可 以將‘/dev/console’作為標準錯誤輸出和/或標準輸出打開‘/dev/null’作
為標準輸入,或者任何其Python進程對你的守護程序有意義的結合方法。