if args.daemon:
pid = os.fork()
if pid > 0:
sys.exit(0)
os.close(0)
os.close(1)
os.close(2)
main()
def main():
# some code
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
当我将主程序作为守护进程调用时(即分叉出的进程并关闭stdin / stdout / stderr),我会收到IOError:[Errno 9]。 我怀疑是由于关闭这些管道,但如果我不这样做,我的程序就不会返回。 有没有办法在守护进程中执行子进程?
os.fork
时,它应该将子进程独立推出,只有针对其PID的信号才能触及它。没有必要关闭stdin/stdout/stderr,因为它(子进程)从一开始就没有打开它们。 - Jakob Lovern