以下脚本不返回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)
答案 0 :(得分:1)
来自父流程的
sys.exit(0)
是否足够?
不,因为子进程已经继承了文件描述符,这意味着它仍然与那些stdin
和stdout
相关联。
我是否必须在子进程内重定向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