检测子进程何时期望在Ruby中输入

时间:2015-04-05 03:43:37

标签: ruby io

我有一个控制台应用程序(命令响应类型),我想控制它的IO,所以我可以用文件中的脚本提供它,然后在脚本执行完成后手动继续执行。

我的脚本是这样的:

ARGF.readlines = commands

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

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

1 个答案:

答案 0 :(得分:0)

我的进一步解决方案结果如下: 期望不能在寡妇身上工作,因为Windows不支持伪终端(PTY)所以我不能像windows一样使用ruby_expect这样的库!

我尝试将IO.select与IO.read_nonblock结合使用,遇到"错误的文件指针"。有人说non-blocking IO is not supported in windows as well

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