小编Dan*_*i K的帖子

防止意外的 stdin 读取并锁定子进程

我试图解决所有情况的一个简单案例。我正在运行一个子进程来执行某个任务,我不希望它要求 stdin,但在我什至不希望的极少数情况下,它可能会尝试读取。我想防止它在这种情况下挂起。

这是一个经典的例子:

import subprocess
p = subprocess.Popen(["unzip", "-tqq", "encrypted.zip"])
p.wait()
Run Code Online (Sandbox Code Playgroud)

这将永远挂起。我已经尝试添加

stdin=open(os.devnull)
Run Code Online (Sandbox Code Playgroud)

还有这样的..

如果我找到有价值的解决方案,我会发布。足以让我在父进程中收到异常 - 而不是无休止地进行通信/等待。

更新:似乎问题可能比我最初预期的更复杂,子进程(在密码和其他情况下)从其他文件描述符读取 - 例如 /dev/tty 与外壳交互。可能没有我想的那么容易解决..

python linux shell subprocess pipe

5
推荐指数
1
解决办法
1501
查看次数

标签 统计

linux ×1

pipe ×1

python ×1

shell ×1

subprocess ×1