Linux进程间通信(五) 信号通信之signal()、信号集函数组及其基础实验
副标题[/!--empirenews.page--] 上一节介绍进程间通信方式之一信号通信中的信号产生和捕捉函数,这一节介绍信号处理函数signal()函 数和信号集函数组,接上一节http://blog.csdn.net/mybelief321/article/details/9078193 强烈建 议做最后一个实验! 信号处理方法 信号处理的方法主要有以下两种: ① 使用 signal() 函数; ② 使用信号集函数组。 使用signal()函数 函数说明 使 用signal()函数处理时,只需指出要处理的信号和处理函数即可。它主要用于前32种非实时信号的处理,不支 持信号传递信息。Linux还支持一个更健壮更新的信号处理函数呢,它就是 sigaction(),推荐使用这个函数 。 函数格式 这里 signal() 这个函数的原型我当时看了头有点大,还是先说明一下:首先该函数原型整体指向一个无 返回值并且带一个整形参数的函数指针,也就是信号的原始配置函数;接着该原型又带有两个参数,其中第2 个参数可以是用户自定义的信号处理函数的函数指针。不明白也没事,后边做实验就明白了,会用就行了。 这里要说明的是 sigaction()函数中第2个和第3个参数用到的 sigaction 结构,下表为 siaction的定义 : sa_handler 是一个函数指针,指定信号处理函数,这里除可以是咱们自定义的处理函数外,还可以为 SIG_DFL(采用默认的处理方式)或SIG_IGN(忽略信号)。它的处理函数只有一个参数,即信号值。 sa_mask 是一个信号集,它可以指定在信号处理程序执行过程中哪些信号应当被屏蔽,在调用信号捕 获函数前,该信号集要加入到信号的信号屏蔽字中。 sa_flags 中包含了很多标志位,是对信号进行处 理的各个选择项。它的常见可选值如下表所示: (编辑:徐州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |