代码如下:

#include

#include

#include

void waiting(),stop();

int wait_mark;

main()

{

int p1,p2,stdout;

while((p1=fork())==-1);       /*创建子进程p1*/

if (p1>0){

wait_mark=1;

signal(SIGINT,stop);   /*接收到^c信号,转stop*/

waiting();

kill(p1,16);        /*向p1发软中断信号16*/

wait(0);          /*同步*/

printf("Parent process is killed!n");

exit(0);

}

else

{

wait_mark=1;

signal(16,stop);        /*接收到软中断信号16,转stop*/

waiting();

lockf(stdout,1,0);

printf("Child process 1 is killed by parent!n");

lockf(stdout,0,0);

exit(0);

}

}

void waiting()

{

while(wait_mark!=0);

}

void stop()

{

wait_mark=0;

}

预期结果为:系统调用signal( )让父进程捕捉键盘上来的中断信号(即按^c键);捕捉到中断信号后,父进程用系统调用kill( )向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止:

Child process1 is killed by parent!

父进程等待两个子进程终止后,输出如下的信息后终止:

Parent process is killed!

但执行结果为:按^c键后,只输出了Parent process is killed!而没有子进程那句...请问是为什么呢?

|

你在子进程中加上signal(SIGINT, SIG_IGN);就可以了。

当你按Ctrl+C时子进程也收到了^C信号,子进程按照默认处理退出,收不到16信号了。所以也就打印不出来

|

顶下1楼的

linux 进程崩溃 wait,Linux信号机制有关问题相关推荐

  1. linux 进程崩溃log,Linux系统日志及日志分析

    Linux系统拥有非常灵活和强大的日志功能,可以保存几乎所有的操作记录,并可以从中检索出我们需要的信息. 大部分Linux发行版默认的日志守护进程为 syslog,位于 /etc/syslog 或 / ...

  2. linux 进程崩溃log,linux调试:dmesg 查看程序崩溃原因分析方法之一

    在Linux下写C/C++程序的程序员,时常与Core Dump相见.在内存越界访问,收到不能处理的信号,除零等错误出现时,我们精心或不精心写就的程序就直接一命呜呼了,Core Dump是Linux仁 ...

  3. linux进程管理机制,linux进程管理,linux进程管理机制

    linux进程管理,linux进程管理机制 一.基本介绍 1.在 LINUX 中,每个执行的程序(代码)都称为一个进程.每一个进程都分配一个 ID 号 2.每一个进程,都会对应一个父进程,而这个父进程 ...

  4. linux 进程 崩溃被杀 原因查找

    目录 到底是什么信号 OOM 谁发的信号 systemtap audit 案例与总结 一个进程的异常终止,通常有两种情况,一种是crash,另一种是被kill掉了. crash是指程序出现了自己无法解 ...

  5. linux 进程间广播,Linux系统编程之进程间通信之浅谈信号

    我们接着谈Linux学习过程中一个重要的话题--信号. 一.信号的概念: 信号是一种软件中断,它提供了一种处理异步事件的方法,也是进程间唯一的异步通信方式. 二.信号的来源: 1.硬件方式: 当用户按 ...

  6. Linux进程崩溃排查方法

    dmesg 通过该指令可以查看进程崩溃的相关信息 上图中最后两条即为进程崩溃的日志(该程序执行过两次),通过日志可以看出是在调用libfun.so时出错,在日志中给出了进程崩溃的地址,可以通过addr ...

  7. linux进程家族树,Linux内核 | 进程管理

    作者:世至其美 博客地址:hqber.com 转载须注明以上信息, 更多文章,请访问个人博客:hqber.com 1. 进程和线程 1.1 定义 进程是处于运行状态的程序和相关资源的总称,是资源分配的 ...

  8. Linux进程ID号--Linux进程的管理与调度(三)

    进程ID概述 进程ID类型 要想了解内核如何来组织和管理进程ID,先要知道进程ID的类型: 内核中进程ID的类型用pid_type来描述,它被定义在include/linux/pid.h中 enum ...

  9. linux 进程管理 ppt,Linux内核结构与进程管理.ppt

    Linux内核结构与进程管理.ppt Linux 内核结构与进程管理,Linux系统结构Linux kernel 开放源代码的linux操作系统内核,目前版本为2.6,Linux内核组成1. 进程调度 ...

最新文章

  1. Java for LeetCode 067 Add Binary
  2. 反码求和校验: 一个数加上自己取反得到的数正是时钟轮盘上最大那个数
  3. 3.10 直观理解反向传播-深度学习-Stanford吴恩达教授
  4. 五、创建Bean的三种方式
  5. 设置三个线程顺序打印数字问题(转载)
  6. 引用之函数返回值 函数的返回值为引用类型《三》
  7. 分享一个自己写的py扫描路径工具
  8. 计算机二级在线练,计算机二级操作练习题.doc
  9. 【设计鉴赏】精选字体设计鉴赏
  10. KCF跟踪算法/目标跟踪算法KCF案例程序源码
  11. 为什么建网站需要服务器,建网站需不需要服务器
  12. 对SMART法则的多种解释
  13. 何钦铭c语言第三版第9章答案,c语言程序设计第3版何钦铭 颜 晖 第9章 结构.pdf...
  14. 一个大学生的心灵告白:世界上最后一封情书
  15. afn原理 ios_iOS AFNetworking网络框架详解
  16. unity3d热更新插件uLua
  17. 考拉海购操作教学-API接口
  18. python爬虫 爬取图片
  19. eclise导入已存在工程报 Faceted Project Problem 错误
  20. 计算机学生要学的基础知识,中小学生应注重学习计算机的基础知识

热门文章

  1. 基于mysql和php的分布式事务处理1,基于MySQL和PHP的分布式事务处理
  2. java obervable_RxJava中Observable,Completable和Single之间有什么区别
  3. SAP ABAP刷新ALV 渲染刷新 (我也不太懂,反正就这么写了)
  4. js判断url链接是否可访问(服务可连接,可用)
  5. idea中常用的快捷键以及一些奇淫技巧 , 加快我们的开发效率
  6. lombok之@RequiredArgsConstructor注解
  7. 在IDEA中右键New没有创建Mapper文件选项解决办法
  8. java开发利器 源码_Java开发的利器: 反编译工具 JD-GUI
  9. mysql索引结构优缺点_mysql索引优缺点及注意事项
  10. flex布局_flex布局的 flex(felx-grow、flex-shrink、flex-basis)详解