【发布时间】:2019-12-06 16:52:35
【问题描述】:
我有一个进程作为 FIFO 管道的一部分运行
FIFO=$(mktemp -u)
mkfifo $FIFO
(cat $FIFO | zenity --progress \
--width 500 --height 25 --title="Uploading to Youtube " \
--text='<span font="12" font_weight="bold" foreground="red">'$xy'\n '"$fz"' Youtube Upload: '$fcount' TO GO </span>' --pulsate --auto-close --auto-kill) &
upl=$(python /home/pi/Documents/ytu/yt_up.py --file="${_file}" --title="$finaltitle $xy" --description="$show_body" --keywords="$yt_tags" --category="28" --privacyStatus="$priv")
echo 'Bye bye' > $FIFO
rm -f $FIFO
目前这很好用,Zenity 进度在 python 脚本执行和关闭时保持打开状态。 但是我希望能够使用取消按钮中止该过程,并在上面的代码之后尝试过这个:
FIFO=$(mktemp -u)
mkfifo $FIFO
(cat $FIFO | zenity --progress \
--width 500 --height 25 --title="Uploading to Youtube " \
--text='<span font="12" font_weight="bold" foreground="red">'$xy'\n '"$fz"' Youtube Upload: '$fcount' TO GO </span>' --pulsate --auto-close --auto-kill) &
upl=$(python /home/pi/Documents/ytu/yt_up.py --file="${_file}" --title="$finaltitle $xy" --description="$show_body" --keywords="$yt_tags" --category="28" --privacyStatus="$priv")
#updated to show code I am using
if [ "$?" = 1 ] ; then
sudo pkill -f yt_up.py
fi
echo 'Bye bye' > $FIFO
rm -f $FIFO
但是 Zenity 进度对话框中的取消按钮似乎没有触发 pkill 事件,也没有抛出错误。我已经测试了 pkill 代码在从 CLI 运行时可以正常工作并关闭脚本
更新:我现在已经移除了 FIFO,看看是否有什么不同,也移到了 YAD,因为我可以精确定位对话窗口:
upl=$(python /home/pi/Documents/ytu/yt_up.py --file="${_file}" --title="$finaltitle $xy" --description="$show_body" --keywords="$yt_tags" --category="28" --privacyStatus="$priv") | \
yad --progress \
--button=Cancel:1 --geometry="500x125+138+40" --width=500 --height=25 --title="Uploading to Youtube " \
--text='<span font="12" font_weight="bold" foreground="red">'$xy'\n '"$fz"' Youtube Upload: '$fcount' TO GO </span>' --pulsate --auto-close
# Cancel from zenity progress bar
if [ "$?" = 1 ]; then
sudo pkill -f yt_up.py
echo "Dialog output=$?"
fi
但是,python 进程又一次阻止了对话输出
【问题讨论】:
-
$?永远不会是-1;它设置为 0 到 255 之间的值。 -
好的,谢谢,只是使用其他示例中的代码,将其更改为 0,但仍然无法正常工作
-
我相信点击取消会产生退出状态 1。
-
谢谢,试过了,但由于某种原因无法正常工作,我的意思是 zenity 进度框关闭,而不是 python 脚本。因此,无论出于我怀疑的任何原因,都没有执行
-
这可能与 FIFO 内部发生的 Zenity 部分有关,因此不会捕获输出吗?