假设我有一个简单的C++程序,它接受输入并输出一些字符串。像这样(实际程序要复杂得多,但仍基于文本):

$ ./game
$ what kind of game? type r for regular, s for special.
$ r
$ choose a number from 1 - 10
$ 1
$ no try again
$ 2
$ no try again
$ 5
$ yes you WIN!

我以前没有使用过Python,但是是否可以编写python脚本来运行该程序,将其输入并输入结果到标准输出?我问过有关使用C++运行它的问题here,但似乎太复杂了。如果您可以将我定向到一些代码示例,那就太好了。任何帮助,将不胜感激。

最佳答案

使用pexpect

常规的stdin/stdout管道通常不起作用,因为当文件描述符不是TTY时(通过isatty调用),父级和子级进程中的标准库功能倾向于更积极地缓冲I/O。显然,您可以在父级中解决此问题,因为您拥有该代码。只需在适当的时候调用冲洗。但是,子进程通常会运行一些您不拥有的预先存在的代码。 pexpect模块为子进程提供了一个伪tty,使 child 误以为它在与控制台对话。这与xterm和rxvt等GUI终端使用的技巧相同。

关于c++ - 使用python运行C++程序并对其进行测试,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6783586/

10-11 22:33
查看更多