subprocess.Popen在退出时中断终端

时间:2019-02-27 01:58:22

标签: linux python-3.x subprocess i3

我正在尝试使用python打开程序。我的目标是在python启动子进程后使终端可用。

mutate

在终端中,我必须运行

import subprocess
subprocess.run(['feh', 'foo.png']) # locks program until I close the image = no go
subprocess.Popen('feh', 'foo.png']) # works but breaks new line in terminal

要修复,但是我看不到我在输入什么...

我尝试将其添加到程序的末尾:

$ stty sane

但没有喜悦。该程序仍会在退出时中断终端(如果我使用.run(),则会挂起终端机

我在多个linux平台上都遇到了这个问题,目前正在尝试扩展和使用Arch Linux&i3

其他人尝试都没有喜悦:

import atexit
def fixTerm():
    subprocess.run(['stty', 'sane'])
atexit.register(fixTerm)

不确定下一步如何尝试。任何帮助将不胜感激。

这是破坏终端的整个程序。

subprocess.Popen(['feh', 'foo.png'], shell=True)
subprocess.Popen(['feh', 'foo.png'], shell=False)
subprocess.Popen(['feh', 'foo.png'],
    stdout=subprocess.PIPE, universal_newlines=True)

我不确定这和“ A. Albershteyn”的解决方案之间的区别是什么,但这不会引起问题,上述程序可以。

1 个答案:

答案 0 :(得分:0)

对我来说很好,feh没有输出。 “换行”是什么意思?

~ 
➔ python -c "import subprocess; subprocess.Popen(['feh', '42.png'])"

~ 
➔ echo "feh is open"
feh is open

~ 
➔ echo "I closed it"
I closed it

~ 
➔