免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5524 | 回复: 2
打印 上一主题 下一主题

struct sigevent的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-02 23:04 |只看该作者 |倒序浏览
在书上看到如下的语句:
myaiocb.aio_sigevent.sigev_notify = SIGEV_SIGNAL;
myaiocb.aio_sigevent.sigev_signo = SIGIO;
myaiocb.aio_sigevent.sigev_value.sival_ptr = &myaiocb;
不知道struct sigevent由哪些成员组成,且是什么意思。并且以上语句表达什么意思,请高手指点迷津。万分感谢。

论坛徽章:
0
2 [报告]
发表于 2009-04-08 08:13 |只看该作者
我是新手,
正巧前段时间看过这个。
这段是异步I/O的程序吧
myaiocb.aio_sigevent.sigev_notify = SIGEV_SIGNAL;
上面这句是说明将要以信号的方式通知。当条件满足时(可读,或可写),就会发设定的信号。
myaiocb.aio_sigevent.sigev_signo = SIGIO;
上面这句就是你自己设定的,将要发的信号。
myaiocb.aio_sigevent.sigev_value.sival_ptr = &myaiocb;
我的理解:这个应该是连接AIO请求与信号处理函数的必备步骤吧!

myaiocb这个结构体,还有许多域需要你填充,例如:它的数据缓冲区,对哪个文件发起异步请求等。。。
之后,你就可以发出异步读或写的请求,aio_read(&myaiocd),aio_write(&myaiocd);
aio_error();来确定请求的状态!
当然,你还需要将信号(就是上面的 SIGIO),与信号处理函数绑定。
可以用sigaction(SIGIO,&XXX_XX,NULL);也可以用signal(SIGIO,YOU_HANDLER)
后者使用简单,但推荐使用前者。这些函数干什么,怎么用就不用我解释了吧。

[ 本帖最后由 vincent_zs 于 2009-4-8 08:29 编辑 ]

评分

参与人数 1可用积分 +15 收起 理由
yidou + 15 好注解

查看全部评分

论坛徽章:
0
3 [报告]
发表于 2011-08-11 09:52 |只看该作者
楼上解释的不错{:2_168:}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP