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

#ifndef MAX_LEN
#define MAX_LEN 256
#endif
#define EPOLL_SIZE  1000
int     main(int atgc ,char **argv)
{
    int     fd = 0;
    int     len = 0;
    int     nfds = 0;
    int     index = 0;
    char    buf[MAX_LEN] = {0};
    struct  epoll_event ev;
    struct  epoll_event event[EPOLL_SIZE];

//create a epoll object
    if(-1==(fd=epoll_create(EPOLL_SIZE))){
        perror("create epoll object error:");
        return  -1;
    }
    
    //add a file descriptor which need to be listened
    ev.events = EPOLLIN | EPOLLET;
    ev.data.fd= STDIN_FILENO;
    epoll_ctl(fd,EPOLL_CTL_ADD,STDIN_FILENO,&ev);
    
    //begin to listen the file descriptor
    while(1){
        nfds = epoll_wait(fd,event,1000,-1);
        if(nfds == -1){
            perror("epoll_wait:");
            return  -1;
        }
        for(index = 0 ; index < nfds ; index++){
            if(event[index].events == EPOLLIN){
                len = read(event[index].data.fd,buf,sizeof(buf));
                buf[len] = '\0';
                printf("buf = %s\n",buf);
            }        
        }
    }

return  EXIT_SUCCESS;
}

最简单的epoll的使用范例 : 监听 标准输入 ,并将数据回显到终端的更多相关文章

  1. Struts2第十一篇【简单UI标签、数据回显】

    Struts2UI标签 Sturts2为了简化我们的开发,也为我们提供了UI标签-也就是显示页面的标签-.. 但是呢,Struts2是服务端的框架,因此使用页面的标签是需要在服务器端解析然后再被浏览器 ...

  2. vue 如何在循环中 "监听" 的绑定v-model数据

    vue 如何在循环中 "监听" 的绑定v-model数据 阅读目录 vue 如何在循环中 "监听" 的绑定v-model数据 1. 普通属性的值进行监听 2. ...

  3. andriod开发,简单的封装网络请求并监听返回.

    一.为什么封装 因为android 4.0 以后的发送网络请求必须要放到异步线程中,而异步线程必须跟handle合作才能更新主线程中的UI,所以建议用一个类继承handler来异步处理网络请求. 二. ...

  4. 简单剖析Node中的事件监听机制(一)

    使用js的class类简单的实现一个事件监听机制,不同于浏览器中的时间绑定与监听,类似于node中的时间监听,并且会在接下来的文章中去根据自己的理解去写一下Event模块中的原理. Node.js使用 ...

  5. 监听localStorage中的数据变化

    问题描述:我们在js里面获取了某一个localstorage的值,但是后期它可能改变了,我们js只执行一遍没办法再次获取它的值,当然可以刷新页面获取,但如果是我们的但页面就不能刷新页面了,此时:我们可 ...

  6. angular 使用rxjs 监听同级兄弟组件数据变化

    angular 的官网给出了父子组件之间数据交互的方法,如ViewChild.EventEmitter 但是如果要在同级组件之间进行数据同步,似乎并没有给出太多的信息. 有时候我们想,在一个组件中修改 ...

  7. mac 下使用wireshark监听网络上的数据

    分三个步骤:    1.wireshark安装        wireshark运行需要mac上安装X11,mac 10.8的系统上默认是没有X11的.先去http://xquartz.macosfo ...

  8. vue watch深度监听对象,实现数据联动

    当对象内的某一个元素发生变化,判断对象另一元素,并进行赋值 <template> <input type="text" v-model="a.a1.a1 ...

  9. C# Socket系列一 简单的创建socket的监听

    socket的应用场景,在快速,稳定,保持长连接的数据传输代码.Http也是socket封装出来的,基于一次请求一次回复,然后断开的socket连接封装. 比如我们常见的游戏服务器,目前的很火的物联网 ...

随机推荐

  1. ==、equals、hashCode区别?

    [==.equals().hashCode()区别?] 1)== 运算符用来比较两个变量的值是否相等. 即该运算符用于比较变量对应得内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是 ...

  2. RIDE的使用

    在RIDE中,CTRL + R 自动打开report.html , CTRL + L 自动打开 log.html

  3. 48、tensorflow入门二,线性模型的拟合

    import tensorflow as tf import numpy as np#生成2维的100个0-1的随机数 x_data = np.float32(np.random.rand(2,100 ...

  4. php错误记录

    1.模板不存在ThinkPHP\Library\Think\View.class.php LINE: 110 是因为IndexController的Index函数,而View中没有对应的Index文件 ...

  5. 【转】使用DirectUI技术实现QQ界面

    转自http://bbs.csdn.net/topics/350023031 一.介绍 DirectUI技术说白了就是XML配置文件+图片+JavaScript控制界面.这点与网页css+图片+Jav ...

  6. 当引用了Properties.Settings后,如果执行的时候,出现"配置系统无法初始化" 或者 某某节点不正确

    自定义了一个 PowerConfig命名空间   PowerSettings.Settings 然后一个exe,引用了该dll,在app.cinfig里增加了配置项 <applicationSe ...

  7. java泛型小问题

    几年前当Java5还未正式发布的时候,看到过一些人写的介绍Tiger中的新特性,当时对我第一感觉冲击最大的就是泛型(generics)和注释(annotation),因为它们直接影响了我们编码的语法习 ...

  8. hdu_5783_Divide the Sequence(贪心)

    题目链接:hdu_5783_Divide the Sequence 题意: 给你一个数列,让你分尽可能多的段,并且保证每一段的前缀和都不小于0 题解: 从后往前xjb贪心就行了 #include< ...

  9. time_t

    所在的头文件为 time.h 定义为: #ifndef __TIME_T #define __TIME_T     /* 避免重复定义 time_t */ typedef long     time_ ...

  10. FUSE

    FUSE is particularly useful for writing [ vritual ] file system. Unlike traditional filesystem that ...