博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
APUE学习笔记——10.9 信号发送函数kill、 raise、alarm、pause
阅读量:5024 次
发布时间:2019-06-12

本文共 1315 字,大约阅读时间需要 4 分钟。

转载注明出处:

kil和raise

kill()用来向进程或进程组发送信号

raise()用来向自身进程发送信号。
#include 
int kill(pid_t pid,int signo);int raise(int signo); Both return: 0 if OK,−1 on error
kill向进程号为pid的进程发送signo信号
能够看出 以下两行代码是等价的:
kill(getpid(), signo);raise(signo);
对于kill函数,其參数pid有四种不同情况:
pid > 0          表示向进程号为pid的进程发送信号。
pid==0
    
     将信号发送给同一进程组 且发送进程具有向其发送信号权限 的全部进程
(“
全部进程”
包含系统实现定义的系统进程集
pid < 0
    
      将信号发送给进程组id为pid绝对值 
 
且发送进程具有向其发送信号权限 的进程
(“
全部进程”
包含系统实现定义的系统进程集
pid == -1
    
   将信号发送给 发送进程具有发送信号权限的 全部进程(“
全部进程”
包含系统实现定义的系统进程集
上面提到发送权限,  发送进程具有发送信号的权限指的是,发送进程的RUID或者EUID 等于 接收进程的RUID或者EUID
signo为0
 kill(pid,0);运行错误測试,但不发送信号。
也就是说。kill(pid,0)。能够用来測试进程号为pid的进程是否存在。
假设进程不存在,kill()返回-1 ,且errno被置为ESRCH

alarm

原型:
#include 
unsigned int alarm(unsigned int seconds);
Returns: 0 or number of seconds until previously set alarm
指定seconds秒后产生SIGALARM信号。在不忽略、不捕获SIGALARM时。系统默认动作为终止调用该定时器的进程。
每一个进程仅仅有一个闹钟。
所以在调用alarm时,假设进程已有闹钟。且还为超时——将剩余时间作为alarm()函数返回值,用新时间seconds替代旧时间。
进一步,假设假设进程已有闹钟。且还为超时而本次alarm的seconds參数为0,则取消曾经的闹钟,并将剩余时间作为返回值。

pause

原型:
#include 
int pause(void); Returns:−1 with errno set to EINTR
pause能够使进程休眠。直到发生一个信号。
APUE学习笔记——10.9 信号发送函数kill、 raise、alarm、pause

转载于:https://www.cnblogs.com/gccbuaa/p/7041394.html

你可能感兴趣的文章
ORA-12538: TNS: no such protocol adapter
查看>>
盒子模型
查看>>
局域网协议
查看>>
[HNOI2012]永无乡 线段树合并
查看>>
Spring整合hibernate:3、使用XML进行声明式的事务管理
查看>>
SqlServer之Convert 函数应用格式化日期(转)
查看>>
软件测试领域中的10个生存和发展技巧
查看>>
Camera前后摄像头同时预览
查看>>
HDU 1856
查看>>
课堂作业01--架构师的职责
查看>>
iOS计算富文本(NSMutableAttributedString)高度
查看>>
2017/09/15 ( 框架2)
查看>>
三、模版的使用
查看>>
hihoCoder 1174 拓扑排序·一
查看>>
git 的更新代码的取消
查看>>
UVA - 1103 Ancient Messages
查看>>
《数据挖掘与数据化运营实战 思路、方法、技巧与应用》—— 读书笔记
查看>>
office note 解决标签页消失的问题
查看>>
现代密码学:RSA算法
查看>>
Core Image 制作自己的美图秀秀
查看>>