免费注册 查看新帖 |

Chinaunix

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

[C] 请教,如何使sigaction的信号函数携带参数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-07 10:41 |只看该作者 |倒序浏览
请教一个定时器和信号的使用问题:

我想使用setitimer实现定时器,使用sigaction安装信号,但是想在定时器函数中携带一个参数:
  1. struct foo{
  2. };

  3. malloc foo;
  4. 将foo地址传递给信号函数
  5. 以使得在每一个定时器触发信号的时候,信号函数能够处理foo中的数据。
复制代码


查了一下资料,说是如果sigaction使用sa_sigaction成员即可实现,利用其第三个参数void *。但是没有找到进一步的资料了。大家有相关的资料或示例吗??望指点一二!

论坛徽章:
0
2 [报告]
发表于 2009-01-07 11:16 |只看该作者
设置标志,主程序中判断标志,然后执行函数

论坛徽章:
0
3 [报告]
发表于 2009-01-07 11:29 |只看该作者

回复 #2 cugb_cat 的帖子

你说用全局变量?我也有考虑过,但是没有办法设置呀?
例如:
for(i =0; i < 256; i++)
{
   malloc foo;

}
每一个新分配的foo中,都包含了一个定时器,它们对应同一个信号函数,没有办法设全局的标志位来区分呀???

论坛徽章:
0
4 [报告]
发表于 2009-01-07 13:10 |只看该作者
关注帖子

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
5 [报告]
发表于 2009-01-07 13:20 |只看该作者
man sigantion,里面有个选项SA_SIGINFO

论坛徽章:
0
6 [报告]
发表于 2009-01-07 13:39 |只看该作者

回复 #5 cjaizss 的帖子

说的就是这个,不过不知具本怎么用。
或者我觉得自己也想错了,进程间可以用sigqueue向Hook传数据,可以通过PID知道是谁发发送, 但Kernel不会。我这种思路本身就有问题,受了Linux内存定时器实现的影响。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP