2014-03-02 26 views
3

默认情况下,您无法在不等待用户按下输入的情况下在Unix中获得终端输入。 我怎样才能立即获得输入?我在debian Linux上使用gdc,所以我不能使用ncurses。 谢谢。如何在Linux下使用D编程语言取消缓冲输入?

+0

“我在debian Linux上使用gdc,所以我不能使用ncurses”究竟是什么让你觉得呢? –

+0

http://stackoverflow.com/questions/1630597/how-to-use-a-c-library-from-d –

+0

我想知道同样的问题... Ncurses现在也可以在Windows上使用。 – DejanLekic

回答

3

ncurses的是,应该工作在几乎所有的Linux安装任何编译一个很好的解决方案......

但是,如果你不想使用ncurses的,还有其他几个选项:

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

  • 你也可以改变终端模式与适当的tcgetattrtcsetattr电话,然后做一切正常。你会想import core.sys.posix.termios;import core.sys.posix.unistd;的职能,那么剩下的做一样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 

然后你就可以立即使用的输入。