【问题标题】:Check if Rhythmbox is running via Python检查 Rhythmbox 是否通过 Python 运行
【发布时间】:2011-06-05 20:21:04
【问题描述】:

我正在尝试通过dbus 从 Rhythmbox 中提取信息,但我只想在 Rhythmbox 正在运行时这样做。有没有办法检查 Rhythmbox 是否通过 Python 运行而不启动它,如果它没有运行?

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

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 是否正在运行而不实际启动它?或者除了解析当前正在运行的进程列表,还有其他方法吗?

【问题讨论】:

    标签: python dbus rhythmbox


    【解决方案1】:

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

    bus = dbus.SessionBus()
    if bus.name_has_owner('org.gnome.Rhythmbox'):
        # ...
    

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

    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

    【讨论】:

      【解决方案2】:
      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()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-17
        • 2018-09-13
        • 1970-01-01
        • 1970-01-01
        • 2019-03-10
        相关资源
        最近更新 更多