linux下异步IO的简单例子【转】
转自:http://blog.chinaunix.net/uid-24567872-id-87677.html
首先,贴一下异步IO中用的的一些结构体,因为平常很少用,整理起来方便查看。
aio.h中的struct aiocb
|
/* Internal members. */ |
siginfo.h中的struct sigevent和union sigval
|
union /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the struct /* POSIX names to access some of the members. */ |
|
|
例子1:
|
void async_read(int s, siginfo_t * info, void * context) int main(void) sigaction(SIGUSR1, &act, NULL); bzero(&cb, sizeof(cb)); cb.aio_fildes = 0; cb.aio_sigevent.sigev_value.sival_ptr = &cb; return 0; |
运行结果:
注意:要加相应的库,-lrt
|
$ ./gcc -o test aio_signal.c -lrt
|
例子2:
|
void async_read(sigval_t val) int main(void) bzero(&cb, sizeof(cb)); cb.aio_fildes = 0; cb.aio_sigevent.sigev_value.sival_ptr = &cb; ret = aio_read(&cb); return 0; |
运行结果同上。
linux下异步IO的简单例子【转】的更多相关文章
- Linux下libaio的一个简单例子
转载:http://www.cnblogs.com/aLittleBitCool/archive/2011/10/18/2216646.html 异步io,很好玩的一个东西,从接口来看,封装的比较厉害 ...
- linux 下 异步IO
方法一:使用fcntl来置O_ASYNC位. 这个方法的效果是,当输入缓存中的输入数据就绪时(输入数据可读),内核向用F_SETOWN来绑定的那个进程发送SIGIO信号.此时程序应该用getchar等 ...
- Linux下的IO监控与分析
Linux下的IO监控与分析 近期要在公司内部做个Linux IO方面的培训, 整理下手头的资料给大家分享下 各种IO监视工具在Linux IO 体系结构中的位置 源自 Linux Performan ...
- linux下的IO模型---学习笔记
1.linux文件系统和缓存 文件系统接口 文件系统-一种把数据组织成文件和目录的存储方式,提供了基于文件的存取接口,并通过文件权限控制访问. 存储层次 文件系统缓存 主存(通常时DRAM)的一块区域 ...
- Linux下的IO模式
对于一次IO访问(以read举例),数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间.所以说,当一个read操作发生时,它会经历两个阶段:1. 等待数据准 ...
- Linux下面的IO模型
1. Linux下的五种I/O模型 阻塞I/O模型: 一直阻塞 应用程序调用一个IO函数,导致应用程序阻塞,等待数据准备好. 如果数据没有准备好,一直等待….数据准备好了,从内核拷贝到用户空 ...
- Linux下getopt()函数的简单使用
最近在弄Linux C编程,本科的时候没好好学啊,希望学弟学妹们引以为鉴. 好了,虽然啰嗦了点,但确实是忠告.步入正题: 我们的主角----getopt()函数. 英雄不问出处,getopt()函数的 ...
- 【转载】Linux下的IO监控与分析
近期要在公司内部做个Linux IO方面的培训, 整理下手头的资料给大家分享下 各种IO监视工具在Linux IO 体系结构中的位置 源自 Linux Performance and Tuning G ...
- Linux下控制器IO地址
在Linux下使用cat /proc/ioports可以查看控制器使用的IO地址范围
随机推荐
- APICloud携技术入滇 助力互联网创业
在<相比北上广二三线城市创业有哪些优势? >一文中,小编深入探讨了目前二三线城市在互联网行业发展的现状,城市间的消费错位导致了二三线城市具有大规模的消费能力,促使互联网行业的逐步崛起.我们 ...
- 运用bat进行数据库备份
执行Bat脚本 @echo off sqlplus sys/welcome@orcl as sysdba @C:\Users\yangfan\Desktop\login.sql echo 按任意键结束 ...
- MongoDB Map Reduce
介绍 Map-Reduce是一种计算模型,简单的说就是将大批量的工作分解(MAP)执行,然后再将结果合并成最终结果(REDUCE). MongoDB提供的Map-Reduce非常灵活,对于大规模数据分 ...
- websocket 待更新
https://mp.weixin.qq.com/s?__biz=MjM5OTM0MzIwMQ==&mid=2652545551&idx=1&sn=403b75d95cf191 ...
- redsocks 配合iptables设置全局sockts5代理
参照:http://kuaile.in/archives/1370 架构图: 第一步,安装redsocks 1. 安装依赖 yum install libevent-devel 2. 下载编译 git ...
- 为Virtual Studio Code配置Python调试插件(Ubuntu14.04)
详情见以下python for virtual studio code插件的链接: python 安装依赖 1.Python is installed on the current system Pa ...
- Java基础之处理事件——applet中语义事件的处理(Lottery 1)
控制台程序. 语义事件与程序GUI上的组件操作有关.例如,如果选择菜单项或单击按钮,就会生成语义事件. 对组件执行操作时,例如选择菜单项或单击按钮,就会生成ActionEvent事件.在选择或取消选择 ...
- 学习OpenCV——配置CUDA环境
大家都把GPU&CUDA说的很NB狠NB,于是,下一步想通过GPU加速程序运行.这一个星期,都在配置OpenCV的CUDA环境,今天终于以失败告终,原因是实验室的机器显卡不支持CUDA...伤 ...
- PostgreSQL Configuration – managing scary settings
When it comes to highly available database servers and configuration, a very important aspect is whe ...
- nyist 597 完数?
http://acm.nyist.net/JudgeOnline/problem.php?pid=597 完数? 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 一个 ...