【发布时间】:2010-08-11 00:12:02
【问题描述】:
我无法让它工作。基本上我有一个 python 程序,它期望标准输入中的一些数据,将其读取为 sys.stdin.readlines() 我已经对此进行了测试,并且它可以正常工作,例如 echo "" |我的程序.py
我有第二个程序,它使用子进程模块调用第一个程序,代码如下
proc = subprocess.Popen(final_shell_cmd,
stderr=subprocess.PIPE, stdout=subprocess.PIPE,
shell=False), env=shell_env)
f = ' '.join(shell_cmd_args)
#f.append('\4')
return proc.communicate(f)
第二个程序是一个守护进程,我发现第二个程序运行良好,只要我从第一个程序调用它后按 ctrl-d。
所以似乎子进程没有关闭文件和我的第一个程序在不应该发送更多输入时期望更多输入有问题。
有人知道我怎样才能让它工作吗?
这里的主要问题是“shell_cmd_args”可能包含密码和其他我们不希望作为命令名称传递的敏感信息,因为它会在“ps”等工具中显示。
【问题讨论】:
标签: python shell subprocess