加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何实现stdin,stdout包装器?

发布时间:2020-12-17 00:51:40 所属栏目:Python 来源:网络整理
导读:我有一个运行stdin和stdout的交互式程序. 我需要创建将X发送到它的stdin的包装器,检查它是否打印Y然后 将包装器的stdin和stdout重定向到程序的stdin和stdout,就像直接执行程序一样. 怎么实现这个? X和Y可以硬编码.击?Python? 编辑:我无法运行程序两次.它

我有一个运行stdin和stdout的交互式程序.
我需要创建将X发送到它的stdin的包装器,检查它是否打印Y然后
将包装器的stdin和stdout重定向到程序的stdin和stdout,就像直接执行程序一样.

怎么实现这个? X和Y可以硬编码.击?Python?

编辑:我无法运行程序两次.它必须是一个例子.
这是伪代码:

def wrap(cmd,in,expected_out):
  p = exec(cmd)
  p.writeToStdin(in)
  out = p.readBytes (expected_out.size())
  if (out != expected_out) return fail;
  # if the above 4 lines would be absent or (in == "" and out == "")
  # then this wrapper would be exactly like direct execution of cmd
  connectpipe (p.stdout,stdout)
  connectpipe (stdin,p.stdin)
  p.continueExecution() 
最佳答案
Expect用于自动运行其他程序 – 基本上你用纯文本写的东西,

启动这个程序.当它打印出“用户名”这个词时,请将其用户名发送给我.当它发送“密码”时,请将密码发送给我.

它非常适合驾驶其他程序.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读