请教关于 Popen.communicate,subprocess.Popen 的文档案例。

请看下面的文档描述:

Popen.communicate(input=None, timeout=None)
请注意,如果要将数据发送到进程的标准输入,则需要使用stdin=PIPE创建Popen对象。类似地,为了在结果元组中不只得到None,你还需要给予stdout=PIPE和/或stderr=PIPE。

p=subprocess.Popen(['nslookup'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdin、stdout 和stderr 分别指定程序的标准输入、标准输出和标准错误文件的句柄。有效值为PIPE、DEVNULL、已经存在的文件描述器(正整数)、已经存在的文件对象和None。PIPE表示应该创建子进程的新管道。DEVNULL表示将使用特殊文件os.devnull。使用默认设置None,不会发生重定向;子进程的文件句柄将从父进程继承。

请教关于 PIPE 的原理解释。谢谢。
看文档后,我个人的理解:如果subprocess.Popen 不使用 PIPE 参数,则仍然使用父进程的输入输出,因此会等待用户输入。 使用PIPE 后,Popen.communicate 则可以采用新的管道进行输入输出。
望给出一定的原理解释,或者参考资料。感谢。

阅读 5.1k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题