集成 cmd.cmdloop 和 gobject.MainLoop()
Posted
技术标签:
【中文标题】集成 cmd.cmdloop 和 gobject.MainLoop()【英文标题】:Integrating cmd.cmdloop and gobject.MainLoop() 【发布时间】:2011-09-10 10:24:06 【问题描述】:所以我写了一个基于 cmd.Cmd 的小型控制台应用程序。应用程序有一个由 cmd.cmdloop 触发的命令循环
另一方面,我的控制台应用程序使用 dbus 来启动远程进程。我正在尝试使 laumch 异步,但我得到了
RuntimeError: To make asynchronous calls, receive signals or export objects, D-Bus
connections must be attached to a main loop by passing mainloop=... to the constructor or
calling dbus.set_default_main_loop(...)
所以我想使用 gobject.MainLoop() 作为主循环。
有没有办法让cmd.cmdloop和gobject.MainLoop一起玩?
【问题讨论】:
【参考方案1】:看起来 cmd.cmdloop 不是主循环,只是一种反复获取用户输入的方法。你最好的选择是,如果你想让它尽可能异步,并且你已经在使用 dbus 可能是有一个客户端进程,它使用 cmd.cmdloop 并将信号发送到另一个使用 gobject mainloop 的进程来实际启动远程进程。客户端进程将向包含要运行的命令的 gobject 进程发送信号,gobject 进程将执行它们。我不确定这会做你想做的事,但它看起来像用户输入上的 cmd.cmdloop 块,因此不能很好地与 mainloop 配合使用。
【讨论】:
以上是关于集成 cmd.cmdloop 和 gobject.MainLoop()的主要内容,如果未能解决你的问题,请参考以下文章