LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1020|回复: 2

一个关于linux 信号 的问题 请教各位达人.

[复制链接]
发表于 2006-6-20 15:40:06 | 显示全部楼层 |阅读模式
今天看了<<unix高级环境编程>>信号这一章 讲到了几个信号操作的函数的实现.看不懂它给的源码  请各位达人帮我解释解释.

#include <signal.h>
#include <errno.h>

#define SIGBAD(signo) ((signo)<=0 || (signo)>= NSIG) /*NSIG代表什么*/

int
sigaddset(sigset_t *set , int signo){
  
   if(SIGBAD(signo)){errno = EINVAL; return(-1);}/*EINVAL  错误设置值代表什么? */
   *set |= 1 <<(signo - 1 )); /*这里不懂.虽然注释是说这句是使一位设置为on ,但是怎么实
现. |= 这个运算还是什么意思 还有 &= 是什么意思.  << 又是什么意思.*/
  return(0);
}



对不起请原凉我问了一些c语言基础语法的问题.我的c语言基础实在不牢固.
发表于 2006-6-20 19:55:18 | 显示全部楼层
|=,&=, << ,去看C语言的位操作,分别是:或,与,左移;
NSIG我想是定义的信号数量,所以大于等于他就非法;
去errno.h看看定义就知道错误类型了,EINVAL表示参数非法。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-6-20 23:06:56 | 显示全部楼层
感谢呀

看来我要回去把C语言的一些细节问题弄清楚了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表