3

默认情况下,如果不等待用户按下回车,您无法在 Unix 中获得终端输入。如何立即获得输入?我在 debian Linux 上使用 gdc,所以我不能使用 ncurses。谢谢。

4

1 回答 1

3

ncurses 是一个很好的解决方案,应该适用于几乎任何带有任何编译器的 Linux 安装......

但是,如果您不想使用 ncurses,还有其他一些选择:

在文件底部附近查找version(Demo) void main(). RealTimeConsoleInput如果需要(鼠标、调整大小等),可为您提供带有即时输入和其他信息的事件循环。

  • 您也可以使用正确的tcgetattrtcsetattr调用更改终端模式,然后正常执行其他所有操作。你会想要import core.sys.posix.termios;import core.sys.posix.unistd;for 函数,然后其余的与 C 中的相同。

以下是如何做到这一点:

 termios old;
 tcgetattr(1, &old);
 scope(exit) tcsetattr(1, TCSANOW, &old); // put the terminal back to how it was
 auto n = old;
 n.c_lflag &= ~ICANON; // turn off canonical mode
 tcsetattr(1, TCSANOW, &n); // do the change

然后您可以立即使用输入。

于 2014-03-02T19:05:42.147 回答