我尝试使用pexpect异步与gdb通信。如果我使用相同的管道来执行此操作,则使用pexpect的sendline()
函数发送的命令会相互混合。如果我像这样同步它:
def send_command(str):
global p
with GDB_Engine.lock:
p.sendline(str)
p.expect_exact("(gdb)")
它太慢了,因为有很多命令会通过。所以我想要做的是为每个send_command()
块实现不同的管道,然后在工作完成时关闭它。通过这种方式,sendline()
命令生成的文本不会相互混合,我也可以异步执行。