相关疑难解决方法(0)

如何终止使用shell = True启动的python子进程

我正在使用以下命令启动子进程:

p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用时杀死:

p.terminate()
Run Code Online (Sandbox Code Playgroud)

要么

p.kill()
Run Code Online (Sandbox Code Playgroud)

该命令在后台继续运行,所以我想知道如何实际终止该进程.

请注意,当我运行命令时:

p = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE)
Run Code Online (Sandbox Code Playgroud)

它在发出时会成功终止p.terminate().

python linux subprocess kill-process

285
推荐指数
7
解决办法
26万
查看次数

Python中的简单Gnome面板小程序

当我在火车上班时,我将上网本连接到我的Nexus One的wifi热点.当我通过隧道时,我的手机显然会失去它的3G连接,并且在火车出现后需要一段时间重新建立.但上网本wifi标识保持不变,因为它仍然连接到手机本身.

我写了一个小python程序,试图ping服务器,从而决定互联网是否可用(随意建议一种检测互联网连接的方法,可以更快或使用更少的带宽,因为我每月上限).

我的问题是:如何在Python中为GNOME Panel 2.30.2创建一个applet,以图形方式显示这个状态,这样我就可以决定何时继续点击链接并期望互联网正常工作.

我得到了这个带有面板按钮的示例,但是想要一个根据情况而变化的图标.

我已经使用Python几年了但之前没有编码gnome.我在10.04上使用ubuntu桌面版作为我的登录而不是统一.

python gnome panel

14
推荐指数
2
解决办法
7032
查看次数

Python GTK信号处理程序无法正常工作

我正在使用GTK为GUI编写Python应用程序.我注意到从终端用Ctrl-C关闭它是行不通的,我发现这是因为一个错误,所以我试图手动处理信号.问题是如果我将默认行为设置为默认行为,则捕获信号并正确关闭应用程序,但如果我使用自定义处理程序则不起作用.这是我的(简化)代码:

from gi.repository import Gtk
import signal

class MainWindow(Gtk.Window):

    def __init__(self):
        ...
        signal.signal(signal.SIGINT, self.__signal_handler)

    def __signal_handler(self, signal, frame):
        print "Caught!"

    ...

if __name__ == "__main__":
    win = MainWindow()
    win.show_all()
    Gtk.main()
Run Code Online (Sandbox Code Playgroud)

相反,如果我设置了默认行为,则正确捕获信号:

from gi.repository import Gtk
import signal

    class MainWindow(Gtk.Window):

        def __init__(self):
            ...
            signal.signal(signal.SIGINT, signal.SIG_DFL)

        ...

    if __name__ == "__main__":
        win = MainWindow()
        win.show_all()
        Gtk.main()
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

编辑:

我尝试了更多,我注意到信号实际上已被捕获,但窗口不是立即关闭,而是仅在重新获得焦点时.相反,如果我跑了

kill -9 pid
Run Code Online (Sandbox Code Playgroud)

从另一个终端窗口,应用程序立即关闭.

python gtk signals pygtk gtk3

5
推荐指数
2
解决办法
2654
查看次数

标签 统计

python ×3

gnome ×1

gtk ×1

gtk3 ×1

kill-process ×1

linux ×1

panel ×1

pygtk ×1

signals ×1

subprocess ×1