多路复用 io-epoll(二) 控制与等待 - 课后练习
我要参与
多路复用 io-epoll(二) 控制与等待 - 课后练习

示例

等待用户输入数据,如果没有则打印 timeout,否则获取用户输入,并输出

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

#define MAXEVENTS 10

int main(void)
{
    int epfd,ret;   
    struct epoll_event ev;// 请求事件结构体
    struct epoll_event ret_ev[MAXEVENTS];
    char buffer[64] = {0};

    epfd = epoll_create(1);
    if (epfd == -1){
        perror("[ERROR] epoll_create(): ");
    }   
    
    printf("epfd = %d\n",epfd);
    
    ev.data.fd = 0; // 设置文件描述符
    ev.events = EPOLLIN;// 设置事件
    ret = epoll_ctl(epfd,EPOLL_CTL_ADD,0,&ev);
    if (ret == -1){
        perror("[ERROR] epoll_ctl(): ");
        exit(EXIT_FAILURE);
    }   

    for(;;){
        ret = epoll_wait(epfd,ret_ev,MAXEVENTS,1000);// 等待文件描述符关联的事件发生
        if (ret == -1){
            perror("[ERROR] epoll_wait(): ");
            exit(EXIT_FAILURE);
        }else if(ret == 0){ 
            printf("Timeout.\n");
        }else if (ret > 0){ 
            fgets(buffer,sizeof(buffer),stdin);
            printf("buffer : %s\n",buffer);
        }
    }   
    return 0;
}

练习

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

去发布

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

我的作业

全部作业

微信客服

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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