APUE 信号学习笔记

#include  < sys / types.h >
#incude 
< signal.h >
#include 
< unistd.h >

typedef 
void  Sigfunc( int );
Sigfunc 
* signal( int , Sigfunc * );

int  kill(jpid_t pid,  int  signo);
int  raise( int  signo);
unsigned 
int  alarm(unsigned  int  seconds); // unistd.h
int  pause();//unistd.h

每个进程都有一个信号屏蔽字,它规定了当前要阻塞递送到该进程的信号集。对于每种可能的信号,该屏蔽字都有一位与之对应。对于某种信号,若其对应位已设置,则它当前是阻塞的。进程可以调用sigprocmask来检测和更改其当前信号屏蔽字。信号数可能会超过一个整型数所包含的二进制位数,因此出现了数据类型sigset_t,它保持一个信号集。

kill函数将信号发送给进程或进程组。raise函数则允许进程向自身发送信号。

POSIX.1将信号编号0定义为空信号。如果signo参数是0,则kill仍执行正常的错误检查,但不发送信号。这常用来确定一个特定进程是否仍旧存在。如果想一个并不存在的进程发送空信号,则kill返回-1,errno则被设置为ESRCH。

使用alarm函数可以设置一个时间值。当设置的时间超过时,产生SIGALARM信号。如果不忽略或不捕捉此信号,则默认动作是终止该进程。每个进程只能有一个闹钟时间

pause是在信号处理函数处理完毕后才返回。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值