1

次のように、リモートコンピューター上のd-busセッションバスに接続するスクリプトを作成しました。

os.environ["DBUS_SESSION_BUS_ADDRESS"] = "tcp:host=192.168.0.1,port=1234"
bus = dbus.SessionBus()

これは問題なく機能しますが、異なるコンピューター上の複数のセッションバスに接続できる必要がある場合を除きます。私は次のことを試しました:

os.environ["DBUS_SESSION_BUS_ADDRESS"] = "tcp:host=192.168.0.1,port=1234"
bus1 = dbus.SessionBus()
os.environ["DBUS_SESSION_BUS_ADDRESS"] = "tcp:host=192.168.0.2,port=1234"
bus2 = dbus.SessionBus()

しかし、それは機能しません。SessionBusへの2回目の呼び出しは、最初の呼び出しと同じオブジェクトを返します。すなわち。この場合、両方のオブジェクトは192.168.0.1のセッションバスを参照します。SessionBusへの最初の呼び出しだけが実際に何かを実行し、その後のすべての呼び出しは最初の呼び出しで作成されたオブジェクトを返すだけのようです。誰かがこれを回避する方法を知っていますか?

4

2 に答える 2

1

Python/DBUS ソースを調べてみると、 inがブール値のパラメーター_dbus.pySessionBus.__new__とっていることに気付きました。private

`private` : bool
    If true, never return an existing shared instance, but instead
    return a private connection.

bus = dbus.SessionBus(private=True)違いはありますか?

于 2010-09-23T09:08:45.693 に答える