我们在windows平台上使用cygwin进行一些维护工作。我想要做的不仅是使用python启动cygwin或启动它并传递一个命令。
我想启动cygwin,保持会话,然后我根据需要传递一个命令,然后获取控制台输出,然后如果我需要,我传递第二个命令并获得输出... < / p>
我想这样做是因为我们公司使用一堆命令与服务器通信,类似于下面的内容: 第1步:登录 第2步:initInfo 第3步:getStatus = Port1
我无法传递命令一次,因为我需要根据前面命令的输出控制下一个传递的命令。
我可以使用下面的命令启动mintty.exe并获取进程ID,如何将命令传递给这个特定的应用程序并使用python获取输出,我需要多次与mintty进行通信每当我想执行命令时,都不会开始新的薄荷。
p_mintty = subprocess.Popen(['c:/cygwin/bin/mintty.exe', '-'], shell = True, stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
您的任何建议都受到热烈欢迎!
答案 0 :(得分:1)
试试这个:
program = subprocess.Popen(['c:/cygwin/bin/mintty.exe', '-'], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
program.stdin.write("command1")
stdout1, stderr1 = program.communicate()
program.stdin.write(change_something(stdout1))
stdout2, stderr2 = program.communicate()
..etc