2011-10-22 82 views
0

很可能这种情况是不可能的,因为我没有发现这种行为记录在任何地方,但很好奇,如果任何人有任何技巧来完成这样的事情。在用户实际访问提交数据之前,是否可以确定程序的标准输入缓冲区的内容?C在提交之前读取标准输入缓冲区

我试图做到这一点,因为我已经建立了一个简单的终端聊天程序,它将消息从一个终端发送到另一个终端以便于通信。我们遇到的问题是,由于传入消息和传出消息一起出现在终端中,所以如果用户在从另一端收到消息时正在键入消息,则会扭曲显示并在新消息末尾附加类型消息收到消息。如果有方法检查缓冲区的内容并采取相应的行动,这将很方便,但我不确定这是否可能没有gui类型的接口级别。

+0

复制到http://stackoverflow.com/questions/421860/cc-capture-characters-from-standard-input-without-waiting-for - 输入将要-PR? – pmod

+2

你的问题不是关于stdin,而是关于读一个tty。这是两个完全不同的东西。看看ncurses。 –

+0

感谢您澄清,确实这就是我正在尝试做的事,我会检查出ncurses的功能。 –

回答

0

搜索此页面上的 'kbhit.c':http://pwilson.net/sample.html

+0

谢谢,这看起来不错,应该为我做的伎俩。 –

+1

这是完全**可怕的**代码。出现了两个直接的错误:(1)使用错误的返回类型('unsigned char'而不是'int')迫使“无字符”和空字符共享相同的值,这使得无法检测到Ctrl- (2)函数的“等待”版本通过'usleep'进入一个CPU-Hogging重试循环,而不是使用'select' /'poll'或者阻塞模式。 –