python 守护程序检测进程是否存在_python创建守护进程的疑问
我自己寫了一個簡易的下載和文件執行的客戶端,如下
"""
省略若干代碼
"""
#執行下載函數
def do_script():
"""Start working"""
script_list = None
for mark in range(3):
try:
# get scripts
if not script_list:
script_list = get_scripts()
if script_list == None:
continue
for script in script_list:
command_exec = 'chmod a+x %s' % script
PyShell.new_progress(command_exec)
PyShell.new_progress('./%s' % script)
# return
except Exception as e:
logging.info(traceback.format_exc())
if mark == 2:
send_error_log(e)
#創建守護進程
def createDaemon():
try:
if os.fork() > 0: os._exit(0)
except OSError, error:
print 'fork #1 failed: %d (%s)' % (error.errno, error.strerror)
os._exit(1)
os.chdir('/')
os.setsid()
os.umask(0)
try:
pid = os.fork()
if pid > 0:
#print 'Daemon PID %d' % pid
os._exit(0)
except OSError, error:
#print 'fork #2 failed: %d (%s)' % (error.errno, error.strerror)
os._exit(1)
sys.stdout.flush()
sys.stderr.flush()
si = file("/dev/null", 'r')
so = file("/dev/null", 'a+')
se = file("/dev/null", 'a+', 0)
os.dup2(si.fileno(), sys.stdin.fileno())
os.dup2(so.fileno(), sys.stdout.fileno())
os.dup2(se.fileno(), sys.stderr.fileno())
#寫pid文件
if os.path.exists(pidfile):
os.remove(pidfile)
pid = str(os.getpid())
file(pidfile, 'w+').write("%s\n" % pid)
#為什么執行函數不能寫這里,寫這里會導致代碼無法執行到這里?
if __name__ == '__main__':
if platform.system() == "Linux":
createDaemon()
#必須寫到main里,才可以執行?
while 1:
do_script()
time.sleep(20)
else:
os._exit(0)
其中,為什么執行函數不能寫在守護進程函數里,而必須寫到main函數里呢?
難道是因為守護進程函數里無法再創建進程原因?
總結
以上是生活随笔為你收集整理的python 守护程序检测进程是否存在_python创建守护进程的疑问的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 荣耀智慧屏X1功能多么?
- 下一篇: 鼻尖比鼻翼短怎么办