我希望能够使用 select()
从 STDIN 输入单个字符(无 ENTER)。
因此,当用户按下单个键时,select()
应该立即返回,而不是等待用户按下 ENTER。
int main(void)
{
fd_set rfds;
struct timeval tv;
int retval;
/* Watch stdin (fd 0) to see when it has input. */
FD_ZERO(&rfds);
FD_SET(0, &rfds);
/* Wait up to 2 seconds. */
tv.tv_sec = 2;
tv.tv_usec = 0;
retval = select(1, &rfds, NULL, NULL, &tv);
if (retval == -1)
perror("select()");
else if (retval)
printf("Data is available now.\n");
else
printf("No data within five seconds.\n");
exit(EXIT_SUCCESS);
}
这可行,但您必须按 ENTER 键才能完成。我只希望选择不等待用户按下键和 ENTER。
谢谢。
最佳答案
我相信,当一个键被输入到终端时,它会被缓冲直到你按下 ENTER,也就是说,就程序而言,你没有输入任何东西。您可能想快速浏览一下 this question .
关于c++ - C select() 超时 STDIN 单字符(无 ENTER),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8514990/