免费注册 查看新帖 |

Chinaunix

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

[求助]信号问题,万分着急,在线等...... [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-12 13:08 |只看该作者 |倒序浏览
我想实现以下功能,
1.只接收55和56号信号,其它信号屏蔽掉不保存,不处理
2.sigaddset怎样使用,我下面的用法不对.
请高手给予指点,帮我写出屏蔽的那段代码,万分感谢!!小弟在线等!
PS:我是在LINUX下运行的

我实现的代码如下:


#include <stdlib.h>
#include <iostream>
using namespace::std;


int main(int argc,char**argv)
{
        pid_t pid;
        pid=getpid();
        cout << "-------------------" <<pid <<endl;

        sigset_t waitset;
        int sig;
        int result = 0;

        sigemptyset( &waitset );
        sigaddset(&waitset,55);
        sigaddset(&waitset,56);

        result = sigwait( &waitset, &sig );
        if( result == 0 )
               
                cout << "sigwait() returned for signal" << sig <<endl;
        else
        {
                cout << "sigwait() function failed" <<endl;
        }

}

论坛徽章:
0
2 [报告]
发表于 2006-11-13 13:50 |只看该作者

回复 1楼 cczj 的帖子

首先:你的头文件没包含够
缺少<unistd.h>和<signal.h>
其次:sigaddset和sigemptyset的调用方式应该没有错。
我调试发现,它实际上能正确接收55,56信号。其它信号也能捕捉,但是提示“实时信号 XX”,这个问题没搞明白。

论坛徽章:
0
3 [报告]
发表于 2010-03-07 09:53 |只看该作者
sigfillset(&set)
sigprocmask(SIG_SETMASK, &set, NULL)

论坛徽章:
0
4 [报告]
发表于 2010-03-07 21:50 |只看该作者
sigemptyset( &waitset );
sigaddset(&waitset,55);
sigaddset(&waitset,56);
sigprocmask(SIG_SETMASK, &set, NULL);
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP