有没有其他方法可以关闭stdin文件描述符(当前使用<&-和shell = True)?
收藏

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

dmenu <&-

它将显示一个干净的用户输入提示。我知道在python中使用subprocess的等效方法是
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是实现这一点的唯一方法吗?


最佳答案:

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

subprocess.check_output("dmenu", input=b"")

公众号