是否有另一种方法来关闭stdin文件描述符(当前使用

问题描述 投票:0回答:1

我想写一个与dmenu交互的python脚本。我能够弄明白,如果我想让dmenu只接受用户输入,我可以通过

dmenu <&-

它将显示一个干净的用户输入提示。我知道使用子进程在python中执行此操作的等效方法是

subprocess.check_output("dmenu <&-", shell=True)

但是我不认为这是最好的方法,因为如果我使用提示,它会将提示文本解释为bash语法(例如在“dmenu -p'Project?'”中它会解释'?') 。

有没有办法使用subprocess.Popen来实现相同的?我尝试了很多不同的东西,比如

subprocess.Popen("dmenu", stdin=None)
import sys
sys.stdin.close()
subprocess.Popen("dmenu", stdin=sys.stdin)

是用shell = True实现这个的唯一方法吗?

python linux subprocess
1个回答
2
投票

您需要做的就是不为dmenu提供输入,因此:

subprocess.check_output("dmenu", input=b"")
© www.soinside.com 2019 - 2024. All rights reserved.