生成期望控制台输入而不阻塞的子进程?

2024-03-29 01:16:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过调用CVS.exe进程从Python进行CVS登录。 当手动调用cvs.exe时,它会将消息打印到控制台,然后等待用户输入密码。

当用subprocess.Popen调用它时,我注意到调用阻塞了。代码是

subprocess.Popen(cvscmd, shell = True, stdin = subprocess.PIPE, stdout = subprocess.PIPE,
    stderr = subprocess.PIPE)

我假设它阻塞是因为它在等待输入,但我的期望是调用Popen会立即返回,然后我可以调用subprocess.communicate()来输入实际的密码。如何实现此行为并避免阻塞Popen?

操作系统:Windows XP
Python:2.6
cvs.exe:1.11


Tags: 代码用户true消息密码进程手动shell