0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一个最简单的事件驱动的IO libevent编程例子

Linux阅码场 来源:未知 作者:邓佳佳 2018-03-23 09:54 次阅读

本文演示一个最简单的基于libevent编程的例子。libevent是事件驱动的IO,适用于“好莱坞原则”。

“好莱坞原则”就是说:“不要给我们打电话,我们会给你打电话(don‘t call us, we‘ll call you)”。

所以基于libevent编程,和传统的阻塞、非阻塞、select等会有一些差异,基于libevent编程的时候,不是我APP去询问kernel能否做I/O,它是发过来的,让IO事件来驱动你。

它的主要流程是:针对IO事件,注册callback函数,一旦事件到来,由事件dispatch引擎,回调你的函数。

下面我们演示一个最简单的例子,这个程序侦听终端设备的标准输入事件,注册了一个回调函数cmd_event():

其中的:

event_set(&ev_cmd, STDIN_FILENO,

EV_READ | EV_PERSIST, cmd_event, NULL);

其实就是侦听STDIN_FILENO的输入,并且挂接cmd_event()回调函数的代码。这样一旦有输入,cmd_event()被调用。cmd_event()会将输入的字符串进行printf的输出打印,程序运行效果如下:

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • IO
    IO
    +关注

    关注

    0

    文章

    470

    浏览量

    39507
  • 编程
    +关注

    关注

    88

    文章

    3647

    浏览量

    94205
  • 程序员
    +关注

    关注

    4

    文章

    953

    浏览量

    29908

原文标题:一个最简单的事件驱动的IO libevent编程例子

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    相关推荐

    请教LABVIEW简单的问题

    1,两路模拟输出,用IO控制,高时输出通道1,低时输出通过2,怎么做编程?2,两路模拟输入,用
    发表于 09-29 10:43

    安装libevent报错

    [dudu@localhost libevent-1.3]# makemakeall-recursivemake[1]: 进入目录“/tmp/libevent-1.3”Making all
    发表于 07-30 08:22

    PSRAM简单的读写例子

    下 esp32-s3-devkitc-1 N16R8 上面有 8M PSRAM 是用 SPI 控制的,似乎是满足我需要的。但是,我怎么就找不到 PSRAM 简单的 读写例子,有的是
    发表于 03-03 08:12

    简单的窗口及菜单的例子

    简单的窗口及菜单的例子:  Dos汇编,Win32汇编,硬件资料,丰富的汇编、C 源代码,编程例子详解。
    发表于 05-06 16:36 9次下载

    DSP/BIOS中的IO设备驱动编程技术

    DSP/BIOS中的IO设备驱动编程技术 介绍了DSP/BIOS中I/O设备驱动程序的编写,并给出了
    发表于 12-08 14:37 2115次阅读
    DSP/BIOS中的<b class='flag-5'>IO</b>设备<b class='flag-5'>驱动</b><b class='flag-5'>编程</b>技术

    各种简单例子源码

    关于单片机开发 基于IAR平台 各种简单例子源码 入门级别
    发表于 06-20 16:09 1次下载

    MFC编程例子

    计算机上的上位机制作工具语言之MFC编程例子
    发表于 09-01 15:01 0次下载

    ADI教你简单的方法实现可编程LED驱动

    本文所述的电路显示了创建可编程LED驱动器更简单的方法,该驱动器非常适用于需要紧凑、可扩展、易于供电和高线性度电源的精确照明控制应用。
    的头像 发表于 07-02 09:41 6468次阅读
    ADI教你<b class='flag-5'>一</b><b class='flag-5'>个</b>更<b class='flag-5'>简单</b>的方法实现可<b class='flag-5'>编程</b>LED<b class='flag-5'>驱动</b>器

    shell编程100实用例子分享

    shell编程100实用例子分享
    发表于 01-25 15:39 4次下载

    模拟解像力图表的例子

    实现本节介绍了模拟解像力图表的例子。作为个例子,我们将使用
    的头像 发表于 09-21 10:47 1173次阅读

    设计简单的白光LED驱动器电路

    LM3530 高效白光 LED驱动器 IC 具有可编程环境光检测功能和 I2C 兼容接口,可以设计简单的白光 LED
    发表于 10-15 09:19 973次阅读
    设计<b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>简单</b>的白光LED<b class='flag-5'>驱动</b>器电路

    信号驱动IO与异步IO的区别

    . 谈信号驱动IO (对比异步IO来看) 信号驱动IO 对比 异步
    的头像 发表于 11-08 15:32 1194次阅读
    信号<b class='flag-5'>驱动</b><b class='flag-5'>IO</b>与异步<b class='flag-5'>IO</b>的区别

    Libevent网络库的原理与应用

    1. Libevent介绍 Libevent用C语言编写的、轻量级的开源高性能事件通知库,主要有以下几个亮点: 事件驱动( even
    的头像 发表于 11-09 10:24 575次阅读

    Libevent框架库简介

    Libevent简介 Libevent是开源社区款高性能的I/O框架库,其具有如下特点: 1、跨平台支持。Libevent支持Linu
    的头像 发表于 11-09 16:43 1286次阅读
    <b class='flag-5'>Libevent</b>框架库简介

    python最简单for循环例子

    Python是简单而又强大的编程语言,通过其清晰的语法和丰富的功能库,我们可以实现各种各样的任务。其中最基本的语法结构就是for循环
    的头像 发表于 11-21 14:53 1314次阅读