struct sigevent的问题

发布于 2022-09-18 18:30:02 字数 246 浏览 11 评论 0

在书上看到如下的语句:
myaiocb.aio_sigevent.sigev_notify = SIGEV_SIGNAL;
myaiocb.aio_sigevent.sigev_signo = SIGIO;
myaiocb.aio_sigevent.sigev_value.sival_ptr = &myaiocb;
不知道struct sigevent由哪些成员组成,且是什么意思。并且以上语句表达什么意思,请高手指点迷津。万分感谢。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

摘星┃星的人 2022-09-25 18:30:02

我是新手,
正巧前段时间看过这个。
这段是异步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 编辑 ]

你又不是我 2022-09-25 18:30:02

楼上解释的不错{:2_168:}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文