我刚刚开发了一个用 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 客户端后完成
我该如何解决这个问题?