[英]ruby (rubyinstaller) and cygwin odd behaviour with gets method inside a loop
到目前为止,我已经在Windows XP下的cygwin终端中运行了很多ruby控制台脚本,到目前为止,使用rubyinstaller的ruby 1.9.3-p28都没有问题。
突然之间,我注意到了这种奇怪的行为。 我有以下简单的代码:
while input = gets
puts input
puts "ok"
end
这在控制台中没有任何输出。 看来input = gets
零件使while循环由于某种原因挂起。 如果我以此方式更改脚本
while true
puts "ok"
end
虽然循环按预期方式工作,但是如果我添加input = gets
刚好低于puts "ok"
的位置,则它再次挂起,奇怪的是它甚至在挂起之前都没有向控制台写入“ ok”。 似乎它什么也没做,并且Windows任务管理器显示ruby进程根本没有任何活动。
我也尝试用loop do end
循环,但是行为是完全一样的。
相反,如果我完全不使用循环,一切正常。
我所能理解的是,它与一个循环内的stdin gets方法有关。
我希望有人可以帮我调试一下这里到底发生了什么。
更新(更多信息):脚本在Windows命令外壳中正确运行。
我用以下方法修复了它:
require 'win32console' if RbConfig::CONFIG['host_os'].include? "mingw32"
我不知道我是否必须在cygwin终端上使用“ win32console” gem,即使在II不输出颜色的情况下,到目前为止,我一直在只使用带有“ colorize” gem的togheter来使颜色起作用。 Windows XP本机命令提示符。
我会在代码顶部对此进行提醒...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.