代码之家  ›  专栏  ›  技术社区  ›  Luke

使用Ruby在stdin上设置非规范模式

  •  1
  • Luke  · 技术社区  · 17 年前

    我正在尝试用Ruby制作一个简单的基于终端的游戏,目前我正试图想出一种从终端读取输入的方法。

    gets

    我已经知道我需要将终端置于非规范模式,我假设我可以通过调用 $stdin.ioctl 问题是,我不确定应该传递什么参数或标志,文档和搜索只会提供有关底层C函数的信息。

    有人能告诉我应该打什么电话吗 $stdin.iconl 与?我在OSX Leopard上使用Terminal.app/tcsh。

    %x{stty -icanon -echo}
    key = STDIN.read(1)
    
    1 回复  |  直到 17 年前
        1
  •  3
  •   MarkusQ    17 年前

    最简单的答案是:将IO封装在%x{stty-raw echo}和%x{st ty-raw echo}中,以使用stty更改模式。

    您可能希望执行并确保有一个退出处理程序,以确保在退出时将模式设置回原位。

    --马库斯Q

    推荐文章