首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查Rhythmbox是否正在通过Python运行

检查Rhythmbox是否正在通过Python运行
EN

Stack Overflow用户
提问于 2011-01-09 02:30:31
回答 2查看 1.6K关注 0票数 4

我试图通过dbus从Rhythmbox中提取信息,但我只想在Rhythmbox运行的情况下这样做。有没有一种方法可以检查Rhythmbox是否正在通过Python运行,如果它没有运行,可以不启动它?

每当我像这样调用dbus代码时:

代码语言:javascript
复制
bus = dbus.Bus()
obj = bus.get_object("org.gnome.Rhythmbox", "/org/gnome/Rhythmbox/Shell")
iface = dbus.Interface(obj, "org.gnome.Rhythmbox.Shell)

如果Rhythmbox没有运行,它就会启动它。

我是否可以通过dbus检查Rhythmbox是否正在运行而不实际启动它?或者,除了解析当前正在运行的进程列表之外,是否还有其他方法可以做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-14 05:11:02

这与Rosh Oxymoron的答案类似,但可以说更简洁(尽管未经测试):

代码语言:javascript
复制
bus = dbus.SessionBus()
if bus.name_has_owner('org.gnome.Rhythmbox'):
    # ...

如果您希望在Rhythmbox启动或停止时收到通知,您可以使用:

代码语言:javascript
复制
def rhythmbox_owner_changed(new_owner):
    if new_owner == '':
        print 'Rhythmbox is no longer running'
    else:
        print 'Rhythmbox is now running'

bus.watch_name_owner('org.gnome.Rhythmbox')

有关更多详细信息,请参阅documentation for dbus.bus.BusConnection

票数 5
EN

Stack Overflow用户

发布于 2011-01-09 04:47:23

代码语言:javascript
复制
dbus_main_object = bus.get_object("org.freedesktop.DBus", "/")
dbus_names = dbus_main_object.ListNames(dbus_interface='org.freedesktop.DBus')
if 'org.gnome.Rhythmbox' in dbus_names:
    do_whatever()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4635462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档