2015-04-05 49 views
-1

我有一个控制台应用程序(命令响应类型),我想控制其IO,因此可以使用来自文件的脚本来提供它,然后在脚本执行完成后手动继续执行。检测子进程期望在Ruby中输入

我的脚本是这样的:

ARGF.readlines = commands 

IO.popen('ConsoleApplication') { |io| 
    begin 
     puts io.gets 
     sleep 0.1 
    end while ???? 
} 

正如我观察到IO.popen IO对象的输入连接到过程IO但输出应该被读。如果通过某种方式输出自动显示或我可以检测到进程何时等待输入?我想我可以把这个事情视为完成了!

+2

https://github.com/abates/ruby_expect – 7stud 2015-04-05 04:14:13

+0

先看看它好像是完全相对的。谢谢。但是,这真的很难!我的意思是我期望从像Ruby这样的语言来做这些工作更简单 – Taheri 2015-04-05 04:30:52

+0

我正在研究ruby_expect,并试图用PTY进行一个简单的测试,但是当> require“pty”<时出现错误。是[this](http://stackoverflow.com/questions/16467182/pty-gem-not-found)是真的,我不能在Windows上使用PTY。如果是这样的话,我不能使用ruby_expect? – Taheri 2015-04-05 07:04:13

回答

0

我的进一步的解决方法结果: 由于windows不支持伪终端(PTY),所以我不能在窗口上使用ruby_expect类库,所以期望在widows上不起作用!

我试着与IO.read_nonblock组合遇到“坏文件指针”的IO.select。有人说non-blocking IO is not supported in windows as well

所以我用了一些特殊的字符串来同步自己的读写序列并完成任务。