所以我编写了一个基于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一起玩?
答案 0 :(得分:0)
看起来cmd.cmdloop不是主循环,只是一种从用户那里反复获取输入的方法。这里最好的选择,如果你想让它尽可能地异步,你已经在使用dbus可能是有一个使用cmd.cmdloop的客户端进程并将信号发送到另一个使用gobject mainloop实际启动的进程远程进程。客户端进程将向gobject进程发送信号,其中包含要运行的命令,gobject进程将执行它们。我不确定这会做你想做的事情,但看起来像用户输入的cmd.cmdloop块,因此不能很好地与主循环一起使用。