守护进程的孩子不会释放tty

时间:2016-06-29 17:52:12

标签: python daemon

以下脚本不返回tty

来自父进程的if __name__ == "__main__": try: opts, args = getopt.getopt(sys.argv[1:],'hi:n:',["inputdir="]) except: print help_message sys.exit(2) n = "" for opt, arg in opts: etc... 是否足够? 我是否必须在子进程内重定向stdin / stdout才能返回tty?如果是这样,我该怎么做?

[部分代码]

sys.exit(0)

1 个答案:

答案 0 :(得分:1)

  

来自父流程的sys.exit(0)是否足够?

不,因为子进程已经继承了文件描述符,这意味着它仍然与那些stdinstdout相关联。

  

我是否必须在子进程内重定向stdin / stdout才能返回tty?如果是这样,我该怎么做?

是的,你应该做那样的事情。实际上,你应该做更多的东西 - 比如使用双叉 - 但是其他人已经implemented了,所以你可以改用它。

快速而肮脏,您可以在孩子身上做以下事情:

os.close(0)   # close C's stdin stream
os.close(1)   # close C's stdout stream
os.close(2)   # close C's stderr stream