linux的select的使用示例
时间: 2024-03-12 22:49:08 浏览: 18
以下是一个简单的使用示例:
```c
#include <sys/select.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(void)
{
fd_set rfds;
struct timeval tv;
int retval;
/* 监听标准输入 */
FD_ZERO(&rfds);
FD_SET(STDIN_FILENO, &rfds);
/* 等待 5 秒 */
tv.tv_sec = 5;
tv.tv_usec = 0;
/* 监听标准输入,等待 5 秒 */
retval = select(STDIN_FILENO + 1, &rfds, NULL, NULL, &tv);
if (retval == -1) {
perror("select()");
exit(EXIT_FAILURE);
} else if (retval) {
printf("Data is available now.\n");
} else {
printf("No data within five seconds.\n");
}
return 0;
}
```
这个程序监听标准输入,等待 5 秒钟。如果标准输入有数据可读,就输出 "Data is available now.",否则输出 "No data within five seconds."。注意,select 的第一个参数需要设置为最大的文件描述符加一。在这个程序中,我们只监视了一个文件描述符,即标准输入,因此第一个参数为 `STDIN_FILENO + 1`。