def run(self):
self_cmdline = self.get_cmdlime(os.getpid())
pid = os.fork()
if pid < 0:
raise OSError('create subprocess fail')
elif pid == 0:
if self.chdir:
os.chdir(self.chdir)
os.umask(0)
os.setsid()
os.close(0)
if self.logfile:
f = open(self.logfile, 'a')
os.dup2(f.fileno(), 1)
os.dup2(f.fileno(), 2)
else:
os.close(1)
os.close(2)
args = self.cmdline.split()
os.execlp(args[0], *args)
os._exit(-1)
else:
self.pid = pid
self.time = datetime.now().strftime('%Y-%m-%d %H:%m:%S')
while True:
cmdline = self.get_cmdlime(pid)
if cmdline is None or cmdline != self_cmdline:
break
time.sleep(0.05)
if not self.is_alive():
raise OSError('daemon exit')
self.proc_cmdline = cmdline
return pid
评论列表
文章目录