command="id\n/path/of/script/test_planning.py "
login="ap"+str(ins)
p=subprocess.Popen(["su","-",login],stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
(stdout,stderr) = p.communicate(command)
print(stdout.decode('utf-8'))
在上面的代码中,仅在脚本完成执行后,我才能获得“命令”的结果,反正我可以实现这一点吗? (我很麻烦,因为使用popen我正在创建一个子进程来从root用户登录到另一个用户。然后切换(su-login),我应该运行这个“命令” 反正我可以使用p.communicate流数据吗?
p = subprocess.Popen(
exe_command, bufsize=0,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
while True:
output = p.stdout.readline()
if output.decode() == '' and p.poll() is not None:
break
print(output.decode(), end='')
如果exec_command(是唯一使用subprocess运行的东西),那么上面提到的代码就可以完成工作。
有没有一种方法可以使用子进程在实时流中运行2个命令?