gpt4 book ai didi

python - 如何断开 python DBus 连接?

转载 作者:太空宇宙 更新时间:2023-11-03 19:12:39 25 4
gpt4 key购买 nike

我为 pidgin 客户端制作了某种应答机,它使用 Linux 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 编写)中,指针为 NULL,或者因为它指向随机内存(可能从未初始化为任何内容),或者因为它指向已释放/释放的内存/”已删除”。所以您的问题可能出在您的内存上。尝试使用描述的方法跟踪段错误here

关于python - 如何断开 python DBus 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12457639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com