gpt4 book ai didi

linux - subprocess.Popen 在退出时中断终端

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:14:33 25 4
gpt4 key购买 nike

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

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

修复,但我看不到我输入的内容...

我已经尝试将它添加到我的程序的末尾:

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

但没有快乐。该程序仍然会在退出时中断终端(或者如果我使用 .run() 则挂起

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

其他没有快乐的尝试:

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)

不确定接下来要尝试什么。非常感谢任何帮助。

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

#! /usr/bin/python
import matplotlib.pyplot as plt
import numpy as np
import subprocess

x = np.linspace(0, 2, 100)
plt.plot(x, x**2, label='quadratic')

plt.savefig('foo.png', bbox_inches='tight')
p = subprocess.Popen(['feh', 'foo.png'])

我不确定这与“A. Albershteyn”的解决方案之间有什么区别,但这不会导致问题,而上述程序会导致问题。

最佳答案

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

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

~
➔ echo "feh is open"
feh is open

~
➔ echo "I closed it"
I closed it

~

关于linux - subprocess.Popen 在退出时中断终端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54896887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com