#include <stdio.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
int main() {
fd_set readfds;
struct timeval timeout;
// 初始化文件描述符集合
FD_ZERO(&readfds);
FD_SET(0, &readfds); // 将标准输入(文件描述符0)加入集合
// 设置超时时间
timeout.tv_sec = 5; // 5秒
timeout.tv_usec = 0;
printf("等待输入...\n");
// 调用select函数,监视文件描述符集合中的文件描述符是否可读
int ret = select(1, &readfds, NULL, NULL, &timeout);
if (ret == -1) {
perror("select error");
return 1;
} else if (ret == 0) {
printf("超时,没有输入\n");
} else {
if (FD_ISSET(0, &readfds)) {
char buffer[1024];
int n = read(0, buffer, sizeof(buffer));
if (n > 0) {
buffer[n] = '\0';
printf("读取到输入: %s\n", buffer);
}
}
}
return 0;
}
fd_set:用于存储文件描述符的集合。FD_ZERO(&readfds):初始化文件描述符集合,清空所有位。FD_SET(0, &readfds):将标准输入(文件描述符0)加入集合中。struct timeval timeout:设置超时时间,这里设置为5秒。select():监视文件描述符集合中的文件描述符是否可读。第一个参数是最大文件描述符加1,后面四个参数分别是读、写、异常文件描述符集合和超时时间。FD_ISSET(0, &readfds):检查文件描述符0是否在集合中,即是否有数据可读。这个程序会等待用户输入,如果5秒内有输入,则读取并打印输入内容;否则超时并输出提示信息。
上一篇:linux修改host文件
下一篇:linux cp 文件夹
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站