1

假设我们有一个 bash 脚本bash.sh和一个 python 脚本python.py。无法修改 python 脚本。(比如说,上游)

bash.sh是一个创建 gui 的 zenity 包装脚本。python.py最后在某处打电话wget

bash.sh那里python.py调用并显示一个zenity进度条,像这样

./python.py | zenity --progress --pulsate --auto-close

所以电话是:bash.sh=> python.py=>wget

如果我在 wget 下载开始之前单击“取消”,它将被取消并且python.py脚本退出,如下所示:

Traceback (most recent call last):
File "python.py", line 41, in <module>
print(s.encode('utf-8')) IOError: [Errno 32] Broken pipe

但如果 wget 下载开始,单击“取消”绝对不会执行任何操作。进度对话框保持打开状态,没有关闭任何内容。

我应该怎么做,以便“取消”按钮停止 wget 下载?

4

1 回答 1

0

我刚刚发表了一篇文章,解释了当您取消 zenity 进度对话框时如何真正杀死所有子进程。

可在http://bernaerts.dyndns.org/linux/331-linux-cancel-zenity-progress-dialog-right-way获得

它应该为您提供一个简单的解决方案来解决这个问题。

干杯。

于 2015-01-30T22:22:17.607 回答