请参阅手册了解alarm()和signal()功能。您可以轻松地在不使用任何线程或进程的情况下超时任何代码。
执行此操作的常用方法是使用select()
或poll()
:
struct pollfd fd = {STDIN_FILENO, POLLIN};
switch(poll(&fd, 1, 1)){
case -1:
die("poll failed");
break;
case 0:
//timed out...
break;
default:
//read from stdin
}