多路复用io-select(二) 应用 - 课后练习
我要参与
多路复用io-select(二) 应用 - 课后练习
学习任务 1.9k
等3人参与
来源: 第12周 / 物联网/嵌入式工程师

示例

使用 select 函数监控标准输入,如果有输入,则打印相应的信息

#include <stdio.h>
#include <stdlib.h>
#include <sys/select.h>


int main(void)
{
    int ret;
    int maxfd = 0;
    fd_set readfds,tmpfds;  
    struct timeval tv = {3,0},tmp_tv;
    char buffer[64] = {0};

    FD_ZERO(&readfds);  
    FD_SET(0,&readfds);// 将标准输入读文件描符合集合中

    for(;;){
        tmp_tv = tv;    
        tmpfds = readfds;   

        ret = select(maxfd + 1,&tmpfds,NULL,NULL,&tmp_tv);
        if (ret  == -1){

            perror("[ERROR] select(): ");
            exit(EXIT_FAILURE);

        }else  if (ret == 0){ //  超时返回

            printf("Timeout.\n");

        }else if (ret > 0){ 

            if (FD_ISSET(0,&tmpfds)){  // 判断是否在集合中

                fgets(buffer,sizeof(buffer),stdin);    
                printf("buffer : %s ",buffer);

            }
        }
    }   

    return 0;
}

练习

使用 select 监听有名管道,当有名管道有数据时,读取数据并打印

去发布

登录后即可发布作业,立即

我的作业

全部作业

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师