select检测标准输入

我们先看一下select的参数列表
在这里插入图片描述

  • 参数解释

参数nfds是需要监视的最⼤大的⽂文件描述符值+1;
rdset,wrset,exset分别对应于需要检测的可读⽂文件描述符的集合,可写⽂文件描述符的集 合及异常⽂文 件描述符的集合;
参数timeout为结构timeval,⽤用来设置select()的等待时间

  • 关于fd_set的接口

void FD_CLR(int fd, fd_set *set); // ⽤用来清除描述词组set中相关fd 的位 int >FD_ISSET(int fd, fd_set *set); // ⽤用来测试描述词组set中相关fd 的位是否为真
void FD_SET(int fd, fd_set *set); // ⽤用来设置描述词组set中相关fd的位
void FD_ZERO(fd_set *set); // ⽤用来清除描述词组set的全部位
好了,有了这几个接口写一个select检测检测标准输入的代码吧

#include<stdio.h>
#include<fcntl.h>
#include<sys/select.h>
int main()
{
    fd_set read_fds;
    FD_ZERO(&read_fds);
    FD_SET(0, &read_fds);
    
    for(;;)
    {
        printf("test1_15");
        fflush(stdout);
        int ret = select(1,&read_fds, NULL, NULL,NULL);
        if(ret < 0)
        {
            perror("select");
            continue;
        }
        if(FD_ISSET(0, &read_fds))
        {
            char buf[1024] = {0};
            read(0, buf, sizeof(buf) -1);
            printf("input : %s ", buf);
        }
        else
        {
            printf("error ! invaild fd\n");
            continue;
        }
        FD_ZERO(&read_fds);
        FD_SET(0, &read_fds);
    }

        return 0;
    
    
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值