如何断开python DBus连接?

如何断开python DBus连接?,python,python-2.7,dbus,qdbus,Python,Python 2.7,Dbus,Qdbus,我为pidgin客户端制作了某种应答机,它使用Linuxes DBus与pidgin建立连接。代码如下: class DBus_Answer(): def __init__(self, text = "No text"): self.answer = text bus_loop = DBusQtMainLoop(set_as_default=True) self.bus = dbus.SessionBus() self.

我为pidgin客户端制作了某种应答机,它使用Linuxes DBus与pidgin建立连接。代码如下:

class DBus_Answer():
    def __init__(self, text = "No text"):  
        self.answer = text
        bus_loop = DBusQtMainLoop(set_as_default=True)
        self.bus = dbus.SessionBus()
        self.bus.add_signal_receiver(self.pidgin_control_func,
                                     dbus_interface="im.pidgin.purple.PurpleInterface",
                                     signal_name="ReceivedImMsg")

    def pidgin_control_func(self, account, sender, message, conversation, flags):
        obj = self.bus.get_object("im.pidgin.purple.PurpleService", "/im/pidgin/purple/PurpleObject")
        purple = dbus.Interface(obj, "im.pidgin.purple.PurpleInterface")
        purple.PurpleConvImSend(purple.PurpleConvIm(conversation), self.answer)
现在我想在另一个程序中将其用作模块。我这样称呼它:

answering_machine.DBus_Answer(message)
问题是,当我停止第二个程序(将此程序作为一个模块的程序)并再次启动它时,我将得到一个
分段错误
,因为它想与DBus建立另一个连接,并且它不正常


另外,我想给用户一个禁用这个模块的机会。我尝试使用
if
语句。这将是第一次奏效。但是,如果用户只运行一次模块,就不能再禁用它。

分段错误的发生是因为python模块(用C编写)中的指针为空,或者因为它指向随机内存(可能从未初始化为任何内容),或者因为它指向已释放/解除分配/删除的内存。因此,您的问题可能是内存问题。请尝试使用描述的方法跟踪segfault。出现分段错误的原因是python模块(用C编写)中的指针为空,或者它指向随机内存(可能从未初始化为任何内容),或者它指向已释放/解除分配/删除的内存。因此,您的问题可能是内存问题。请尝试使用所述方法跟踪segfault

如果您没有发布一个自包含的示例,则很难判断。你能用显示问题的
DBus\u Answer
发布一个小程序吗?为每个答案获取主循环似乎是错误的,您应该只有一个主循环。这可能就是问题所在。如果你不发布一个独立的示例,很难说。你能用显示问题的
DBus\u Answer
发布一个小程序吗?为每个答案获取主循环似乎是错误的,您应该只有一个主循环。这可能就是问题所在。