0

我正在尝试使用 python 编写一个下载器脚本(放置在统一午餐器中),它使用所有正确的参数调用 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 退出,而是在后台运行。是否有可能阻止这种情况发生

4

1 回答 1

0

问题在于,按照设计,它会wget忽略SIGHUP其父进程终止时发送的内容。

一种解决方案是使用 pythonsignal模块来捕获SIGCHLD当您关闭终端窗口时应该发送到脚本的哪个,并注册一个处理程序以显式发送 aSIGINTSIGTERMwget.

于 2013-05-03T16:20:57.707 回答