应用程序退出时杀死dbus监视器脚本?

时间:2016-08-12 07:10:41

标签: bash shell while-loop dbus

我正在为gnote使用一个简单的dbus-monitor脚本。该脚本在gnote启动时启动。我修改了桌面文件的exec参数来实现这一点。

问题是我在应用程序(即 gnote )退出后没有找到任何方法来杀死我的脚本。如果应用程序本身退出,则没有必要让脚本在后台运行,因为它不会获取任何输出。

脚本如下所示:

#!/bin/bash 


OJECT="'org.gnome.Gnote'" 
IFACE="'org.gnome.Gnote.RemoteControl'" 
DPATH="'/org/gnome/Gnote/RemoteControl'" 
echo $IFACE


WATCH1="type='signal',sender=${OJECT},interface=${IFACE},path=${DPATH},member='NoteAdded'" 
WATCH2="type='signal',sender=${OJECT},interface=${IFACE},path=${DPATH},member='NoteSaved'" 
WATCH3="type='signal', sender=${OJECT}, interface=${IFACE}, path=${DPATH}, member='NoteDeleted'"

dbus-monitor ${WATCH2} | 
while read LINE; do
  echo $LINE | grep "note://"
done

我试着像这样修改它:

dbus-monitor ${WATCH2} | 
while read LINE; do
  echo $LINE | grep "note://"
  if pgrep "gnote" > /dev/null; then
    echo ""
  else
    break;
  fi
done

pid=`pidof -x $(basename $0)`
kill $pid

但它没有用。我也尝试使用trap,如question中所述,但没有成功。

0 个答案:

没有答案