Python 集成cmd.cmdloop和gobject.MainLoop()

Python 集成cmd.cmdloop和gobject.MainLoop(),python,dbus,Python,Dbus,因此,我基于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=... t

因此,我基于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一起玩吗?

看起来cmd.cmdloop不是一个主循环,只是一种反复从用户那里获取输入的方法。在这里,如果您希望使其尽可能异步,并且您已经在使用dbus,那么最好的选择可能是让一个客户端进程使用cmd.cmdloop并向另一个进程发送信号,该进程使用gobject mainloop来实际启动远程进程。客户端进程将向包含要运行的命令的gobject进程发送信号,gobject进程将执行这些信号。我不确定这是否能满足您的要求,但它看起来像是用户输入上的cmd.cmdloop块,因此不能很好地与主循环配合使用。

看起来cmd.cmdloop不是主循环,只是一种反复从用户获取输入的方法。在这里,如果您希望使其尽可能异步,并且您已经在使用dbus,那么最好的选择可能是让一个客户端进程使用cmd.cmdloop并向另一个进程发送信号,该进程使用gobject mainloop来实际启动远程进程。客户端进程将向包含要运行的命令的gobject进程发送信号,gobject进程将执行这些信号。我不确定这是否能满足您的要求,但它看起来像是用户输入上的cmd.cmdloop块,因此无法很好地与mainloop配合使用