信号处理函数中只修改标记,父进程等待条件真来做处理
2015-10-30 00:00
375 查看
#include <signal.h> #include <stdio.h> #include <unistd.h> #include <stdlib.h> static int g_sig = 0; void user1(int sig) { #if 0 printf("user1 ....sig...%d\n", sig); (void)signal(SIGUSR1, SIG_DFL); #else g_sig = sig; #endif } int main(int argc, char **argv) { pid_t pid; pid = fork(); switch(pid) { case -1: /* Failure */ perror("fork failed"); exit(1); case 0: /* child */ sleep(5); kill(getppid(), SIGUSR1); printf("done..children\n"); exit(0); } //in parent (void)signal(SIGUSR1, user1); pause(); if (g_sig == SIGUSR1) { printf("user1 ....sig...%d\n", g_sig); (void)signal(SIGUSR1, SIG_DFL); } printf("done..father\n"); exit(0); }
相关文章推荐
- 使用puase等待信号要防止信号发生在puase之前。所以为了代码安全,使用sigaction
- 关于Mac的磁盘诊断怎么样通过EasyRecovery完成
- 银联在线支付从upop切换到全渠道的交易流程
- MVC 设计模式
- Swift简介
- ptmalloc
- 关于网络编程六种IO模型的形象比喻
- 配置描述文件mobileconfig的生成
- 测试用的
- Arcgis 地图的发布
- asp.net中Button按钮点击两次才执行Onclick事件的原因
- 算法竞赛入门-回溯-7.4.1-八皇后问题
- 正则表达式语法详解
- muleESB简介和安装(一)
- TurboMail邮件系统企业邮件安全使用管理方案
- 淘宝网电子商务模式的发展
- 角膜塑性镜
- 超低延迟!影速Yingsoo香港云主机至国内延迟低至10ms
- Linux压缩命令
- ubuntu下的nginx+php+mysql配置