Python:阻止系统进程进入后台

时间:2013-05-03 15:54:17

标签: python ubuntu wget gnome-terminal ubuntu-unity

我正在尝试使用python编写一个下载程序脚本(置于Unity luncher中),该脚本使用所有正确的参数调用wget。该脚本从剪贴板中提取url,从gtk主剪贴板中提取文件名,通过文本选择或复制操作,然后单击鼠标中键进行粘贴。代码很简单。

import gtk
from os import system as sys

url = str(gtk.clipboard_get().wait_for_text())
name = str(gtk.clipboard_get(gtk.gdk.SELECTION_PRIMARY).wait_for_text())

if name.lower()=='none' :
    sys("/usr/bin/canberra-gtk-play --id='dialog-warning'")
    exit(1)

sys("/usr/bin/canberra-gtk-play --id='downloading'")
com='wget -c -t 0 "%s" -O "%s"' % (url,name)
sys("gnome-terminal -e '%s'" % com)

脚本打开终端窗口并打印wget输出。问题是关闭gnome-terminal不会导致wget退出,而是在后台运行。是否有可能阻止这种情况发生

1 个答案:

答案 0 :(得分:0)

问题是,by designwget会忽略父进程终止时发送的SIGHUP

一种解决方案是使用python signal模块捕获应该在关闭终端窗口时发送到脚本的SIGCHLD,并注册一个处理程序以显式发送{{1或SIGINTSIGTERM