[英]Call a python subprocess as daemon and exit
我正在使用一對python程序,其中一個應該調用第二個。
但是這應該以第一個程序使第二個程序成為守護程序(或在后台進程中運行),然后退出而不等待第二個程序結束的方式完成。
這在Python中可行嗎?
我一直在看os.fork,子進程模塊,但我很困惑,因為正確的方法來實現這個...
您可以使用subprocess.Popen
:
import subprocess
cmd = ['/usr/bin/python', '/path/to/my/second/pythonscript.py']
subprocess.Popen(cmd)
您可能希望將stdout
和stderr
重定向到某個位置,您可以通過將stdout=<file_obj>
傳遞給Popen
構造函數來實現。
“守護進程”具有比“后台進程”更具體的定義。 默認情況下, Popen
將執行一個子Popen
並將控制權交還給程序以繼續運行。 但是,這沒有說明處理信號(特別是,如果用戶在后台進程完成之前退出shell)或斷開stdin,stderr,stdout以及在調用Popen
時打開的任何其他文件描述符。 如果你真的想要一個守護進程,那么你應該使用python-daemon模塊,這是PEP 3143的一個實現。它可以處理你不想考慮的大部分內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.