Python / Linux / 守护进程尝试显示gtk.messagedialog

0 投票
3 回答
795 浏览
提问于 2025-04-15 18:23

在Ubuntu 8/9上,我正在尝试用Python写一个守护进程,这个守护进程会监控某种网络状态,并通过gtk.messagedialog来通知用户。我通过rc-update安装了这个脚本。守护进程在启动时会自动运行,但即使我登录后也不显示对话框。我猜是因为init.d在tty1上启动了我的守护进程,而那时候没有gnome环境可用。我试着通过子进程来运行对话框,但似乎还是继承了相同的运行环境。对于这种情况,最佳做法是什么呢?

3 个回答

0

为了确认你的代码是否能正常运行,首先你应该在图形界面(比如GNOME桌面)中像普通程序一样执行这个守护进程。

你也可以使用zenity这个工具。

0

你可以使用 notify-send 这个工具(它来自 libnotify-bin 这个软件包)来给桌面用户发送通知,这样你的后台程序就能提醒他们了。

3

如果有五个用户登录到X会话中,消息会发给谁呢?是每个人都能收到吗?

如果有人在本地登录,但只是在使用tty(终端),而不是X11,他们能看到这个消息吗?

如果有人通过ssh -X远程登录,想在自己的系统上运行图形应用程序,这样他们能看到消息吗?你怎么把消息发给他们呢?

Linux的灵活性让你现在的方法有点不够用。通常的做法是,任何对你发送的消息感兴趣的用户,都需要运行一个应用程序来接收这个消息,并以他们想要的方式显示出来。Dbus是一种常用的设置消息传递的方式。这样,远程用户或者只用TTY模式登录的用户也有机会看到这个消息。

撰写回答