摘要: SIGCHLD的产生条件 子进程终止时 子进程接收到SIGSTOP信号停止时 子进程处在停止态,接受到SIGCONT后唤醒时 借助SIGCHLD信号回收子进程 子进程结束运行,其父进程会收到SIGCHLD信号。该信号的默认处理动作是忽略。可以捕捉该信号,在捕捉函数中完成子进程状态的回收。 分析该例子 阅读全文
posted @ 2019-08-11 20:26 王清河 阅读(778) 评论(0) 推荐(0) 编辑
摘要: /*** sync_process.c ***/ #include <stdio.h> #include <signal.h> #include <unistd.h> #include <stdlib.h> int n = 0, flag = 0; void sys_err(char *str) { perror(str); exit(1); } void do_sig_child(int num 阅读全文
posted @ 2019-08-11 19:16 王清河 阅读(273) 评论(0) 推荐(0) 编辑
摘要: pause函数 调用该函数可以造成进程主动挂起,等待信号唤醒。调用该系统调用的进程将处于阻塞状态(主动放弃cpu) 直到有信号递达将其唤醒。 int pause(void); 返回值:-1 并设置errno为EINTR 返回值: ① 如果信号的默认处理动作是终止进程,则进程终止,pause函数么有机 阅读全文
posted @ 2019-08-11 14:41 王清河 阅读(1896) 评论(0) 推荐(0) 编辑
摘要: 信号捕捉特性 练习1:为某个信号设置捕捉函数 【sigaction1.c】练习2: 验证在信号处理函数执行期间,该信号多次递送,那么只在处理函数之行结束后,处理一次。 【sigaction2.c】练习3:验证sa_mask在捕捉函数执行期间的屏蔽作用。 【sigaction3.c】 内核实现信号捕捉 阅读全文
posted @ 2019-08-11 09:55 王清河 阅读(473) 评论(0) 推荐(0) 编辑
摘要: sigaction函数 修改信号处理动作(通常在Linux用其来注册一个信号的捕捉函数) int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact); 成功:0;失败:-1,设置errno 参数: 阅读全文
posted @ 2019-08-11 09:48 王清河 阅读(480) 评论(0) 推荐(0) 编辑