Files
TCP-IP-NetworkNote/ch12/select.c

49 lines
1.2 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include <stdio.h>
#include <unistd.h>
#include <sys/time.h>
#include <sys/select.h>
#define BUF_SIZE 30
int main(int argc, char *argv[])
{
fd_set reads, temps;
int result, str_len;
char buf[BUF_SIZE];
struct timeval timeout;
FD_ZERO(&reads); //初始化变量
FD_SET(0, &reads); //将文件描述符0对应的位设置为1
/*
timeout.tv_sec=5;
timeout.tv_usec=5000;
*/
while (1)
{
temps = reads; //为了防止调用了select 函数后,位的内容改变,先提前存一下
timeout.tv_sec = 5;
timeout.tv_usec = 0;
result = select(1, &temps, 0, 0, &timeout); //如果控制台输入数据则返回大于0的数没有就会超时
if (result == -1)
{
puts("select error!");
break;
}
else if (result == 0)
{
puts("Time-out!");
}
else
{
if (FD_ISSET(0, &temps)) //验证发生变化的值是否是标准输入端
{
str_len = read(0, buf, BUF_SIZE);
buf[str_len] = 0;
printf("message from console: %s", buf);
}
}
}
return 0;
}