假设我有一个简单的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.显然,您可以在父级中修复此问题,因为您拥有该代码;只需在适当的位置调用flush.但是,子进程通常运行一些您不拥有的预先存在的代码. pexpect模块为子进程提供伪tty,这会欺骗孩子认为它正在与控制台通信.这与xterm和rxvt等GUI终端使用的技巧相同.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。