我需要检查用户是否花费了3000毫秒以上的时间在stdin
上进行输入。
有没有办法在等待用户输入时添加超时?像
if (timeout) {
// do something
} else {
// do something else
}
答案 0 :(得分:0)
下面的程序将从stdin
中读取,并设置超时时间。
#include <stdio.h>
#include <unistd.h>
#include <sys/select.h>
#define LEN 100
int main() {
struct timeval timeout = {3, 0};
fd_set fds;
FD_ZERO(&fds);
FD_SET(STDIN_FILENO, &fds);
printf("Hi. What is your name?\n");
int ret = select(1, &fds, NULL, NULL, &timeout);
if (ret == -1) {
printf("Oops! Something wrong happened...\n");
} else if (ret == 0) {
printf("Doesn't matter. You're too slow!\n");
} else {
char name[LEN];
fgets(name, LEN, stdin);
printf("Nice to meet you, %s\n", name);
}
return 0;
}