《UNIX环境高级编程》笔记--kill函数,raise函数,alarm函数,pause函数

1.kill函数和raise函数

kill函数将信号发送给进程或者进程组,raise函数则运行进程向自身发送信号。
#include <signal.h>
int kill(pid_t pid,int signo);
int raise(int signo);
//若成功,则返回0,出错则返回-1.
调用raise(signo);等价于调用kill(getpid(),signo);
kill的pid参数有4种不同的情况。
pid>0      将该信号发送给进程ID为pid的进程。
pid==0   将该信号发送给与发送进程属于同一进程组的所有进程(这些进程的进程组ID等于发送进程的进程组ID)而且发送
进程组具有向这些进程发送信号的权限。这边的所有进程不包含实现定义的系统进程集。
pid<0     将该信号发送给进程组ID等于pid的绝对值,而且发送进程组具有向其发送信号的权限,同样,所有进程集并不包含
某些系统进程。
pid==-1  将该信号发送给发送进程有权限向它们发送信号的系统上的所有进程。不包含某些系统进程。
超级用户可以将信号发送给任一进程,对于非超级用户,其基本规则是:发送者的实际或者有效用户ID必须等于接受者的实际
或者有效用户ID。
posix将编号为0的信号定义为空信号,如果signo参数为0,则kill仍执行正常的错误检查,但是不发送信号,这常被用来
确定一个特定进程是否仍旧存在。如果向一个并不存在的进程发送空信号,则kill返回-1,并将errno设置为ESRCH。

2.alarm和pause函数

使用alarm函数可以执行一个计时器,在将来某个指定的时间该计时器会超时。当计时器超时时,产生SIGALRM信号,如果不忽略
或捕捉此信号,则其默认动作是终止调用该alarm函数的进程。
#include <unistd.h>
unsigned int alarm(unsigned int seconds);
返回值:0或者以前设置的闹钟的余留秒数。
其中,参数seconds的值是秒数,经过了指定的seconds后会产生信号SIGALRM。每个进程只能有一个闹钟,如果在调用alarm时,
以前已为该进程设置过闹钟,而且还没有超时,则将该闹钟时钟的余留值作为本次alarm函数调用的值返回。以前登记的闹钟时钟
则被新值代替。
pause函数使调用进程挂起直至捕捉到一个信号。
#include <unistd.h>
int pause(void); //返回值为-1,并将errno设置为EINTR。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值