如何从脚本启动 dbus 客户端?

如何从脚本启动 dbus 客户端?

我刚刚开发了一个用 Python 编写的 dbus 客户端,当它收到来自 dbus 服务(由另一个用户启动)的消息时,会显示桌面通知。

dbus客户端代码在这里:

#!/usr/bin/python3

from gi.repository import Gtk
from gi.repository import Notify
import dbus
from dbus.mainloop.glib import DBusGMainLoop

DBusGMainLoop(set_as_default=True)
bus = dbus.SystemBus()

def msg_handler(*args,**keywords):
    try:
        #show notification to desktop
        Notify.init('Pendrive Reminder')
        notify = Notify.Notification.new('Pendrive Reminder', 'Shutdown lock enabled. Disconnect pendrive to enable shutdown')
        notify.show()
    except:
        pass

bus.add_signal_receiver(handler_function=msg_handler,    dbus_interface='org.preminder', path_keyword='path')
Gtk.main()

现在,我想从脚本启动 dbus 客户端。但我需要这个 dbus 客户端在脚本完成时不会死掉。

另外,我需要以特定(非 root)用户身份启动 dbus 客户端。该脚本将以 root 身份执行。

我尝试过这个:

 nohup su user -c '/usr/bin/pendrive-reminder/client.py' &

但现在脚本在完成其命令后保持锁定状态,显示为“已失效”进程。所以,我需要让我的脚本可以在启动 dbus 客户端后完成

我该如何解决这个问题?

相关内容