【发布时间】:2013-11-26 09:36:32
【问题描述】:
我有一个由两部分组成的软件:一个是在第一台电脑上运行的 python,另一个是在第二台电脑上运行的 cpp。 它们通过串行端口 (tty) 进行通信。
我想在我的电脑上测试 python 端,用正确的数据输入它,看看它是否按预期运行。
我开始使用子进程,但问题来了:我应该提供哪个标准输入和标准输出?
cStringIO 不起作用,因为没有fileno()
PIPE 也不起作用,因为 select.select() 表示即使没有实际发送,也有需要阅读的内容
你有什么提示吗?有没有我可以使用的假 tty 模块?
【问题讨论】:
-
也许你可以
mock他们并定义return_value。 -
"
select.select()说即使没有实际发送,也有一些东西要阅读" -- 在这种情况下os.read会返回什么?你试过pexpect、pty模块吗? -
关于不工作的 PIPE:你彻底检查了吗?低级管道与 Linux 上的 select 配合得很好(旁注:这种组合用于所谓的自管道技巧以可靠地处理信号)。并且选择也返回 EOF。
标签: c++ python stdout stdin tty