![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
第6章 信号
周厚平
Linux + 安卓 = 标配
展开
-
Linux pause函数 详解
int pause(void); 作用:使调用进程(线程)进入休眠状态(就是挂起);直到接收到信号且信号函数成功返回 pause函数才会返回 返回值:始终返回-1 示例代码:#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdli原创 2018-12-20 16:48:48 · 17794 阅读 · 0 评论 -
信号与线程的关系
POSIX 标准: 0.给线程发送信号用pthread_kill()1.信号处理函数必须在多线程进程的所有线程之间共享,但是每个线程要有自己的挂起信号集合和阻塞信号掩码。2.POSIX 函数 kill/sigqueue 必须面向进程,而不是进程下的某个特定的线程。3.每个发给多线程应用的信号仅递送给一个线程,这个线程是由内核从不会阻塞该信号的线程中随意选出来的。4. 如果发送一个致...原创 2019-01-17 16:08:07 · 472 阅读 · 0 评论 -
进程间的信号 --------详解(通过信号去控制进程的运行状态)
(1)概述 1.信号是一种软件中断,用来处理异步事件 2.信号的本质是一种进程间的通信,一个进程向另一个进程发送信号 3.执行kill -l可查看系统所有的信号 4.作用:ctl+c时用来做一些收尾工作: 1.删除管道.删除共享内存.删除信号量.删除消息队列.. 2.进程间通信(2)信号的生命周期 进程之间约定好:如果发生了某件事情T ( trigger...原创 2018-12-25 16:42:04 · 1426 阅读 · 1 评论 -
sigaction函数 和 sigqueue函数(信号的发送和安装)
[1]sigqueue(发送信号) int sigqueue(pid_t pid, int sig, const union sigval value);参数: pid: 要发送信号的进程ID sig: 要发送的信号 value: 发送的伴随数据,该参数的数据类型是联合体 ...原创 2018-12-24 22:11:29 · 1048 阅读 · 0 评论 -
SIGCHID信号 详解
1.父进程可以监测子进程的以下三种事件; 每次状态改变,子进程会发SIGCHID给父进程 · 子进程终止(即子进程死亡) · 子进程停止(即子进程暂停) · 子进程恢复(即子进程从暂停中恢复执行) 2.若sigaction---sigqueue中注册了SIGCHLD信号(信号的发送和安装) 1.sigaction使...原创 2018-12-24 20:29:16 · 3020 阅读 · 0 评论 -
信号练习: (通过信号模拟 司机--售票员 )
(1)要求: 1.平常司机在车上休息,售票员在观察上车人数。 2.售票员发现车上人满了就提醒司机发车。 3.中途停两个站: 9km. 15km处, 这时售票员要提醒司机。 6.总里程20公里。 7.到终点站后司机提醒售票员让所有乘客下车。 8.售票员退出后, 司机才能退出。(2)练习源码// driver-conductor.c#inc...原创 2018-12-23 16:45:00 · 980 阅读 · 1 评论 -
线程的阻塞信号集 --详解
[1]概述 1.每个线程都拥有独立的阻塞信号掩码。 2.开会时关闭手机是一种比较极端的例子。更合理的做法是暂时屏蔽部分人的电话。对于某些重要的电话,比如儿子老师的电话、父母的电话或老板的电话,是不希望被屏蔽的。信号也是如此。进程在执行某些操作的时候,可能只需要屏蔽一部分信号,而不是所有信号。 3.信号集: 数据类型为 sigset_...原创 2018-12-21 19:30:52 · 818 阅读 · 0 评论 -
linux signal函数详解
signal函数详解typedef的使用(为已有的类型增加一个别名)1.typedef int INT;2.typedef char CHAR[20]; >CHAR是字符数组类型CHAR C1; <> char C1[20];3.typedef int (*原创 2018-12-18 11:07:47 · 374 阅读 · 0 评论 -
14 进程的定时器(与信号相关)
(14)定时器与信号(glibc定时器timer) (0)注意: 1. alarm()函数和setitimer()函数都不能用于多线程中对子线程定时。因为即使信号函数在子线程中 安装,即使定时器在子线程中初始化;当信号产生时,主线程永远都会捕捉信号。 2.对于想要控制指定子线程1的执行时间,需要在子线程1中再创建一个线程2。子线程2过了时间time后,通过p...原创 2019-01-17 21:04:49 · 522 阅读 · 0 评论