父子进程捕捉信号的特点

经过实验:除了2个无法捕捉的信号

只要父进程没有定义该信号,捕捉到信号后,父子都按默认方式处理

父进程定义了,子进程没定义,则父进程按照定义的方式处理,子进程按照默认方式处理;

父子进程都定义,捕捉到后按各自的方式处理。

时间: 2024-11-25 04:04:45

父子进程捕捉信号的特点的相关文章

LINUX实现父子进程轮流修改文件的值

本例子是基于信号的同步机制实现父子进程轮流修改文件中的值. tatic volatile sig_atomic_t sigflag; static sigset_t newmask,oldmask,zeromask; static void sig_usr(int signo) { sigflag=1; } void TELL_WAIT(void) { if(signal(SIGUSR1,sig_usr)==SIG_ERR) perror("signal error"); if(sig

2信号处理之:信号产生原因,进程处理信号行为,信号集处理函数,PCB的信号集,sigprocmask()和sigpending(),信号捕捉设定,sigaction,C标准库信号处理函数,可重入函数,

 1信号产生原因 2.进程处理信号行为 manpage里信号3中处理方式: SIG_IGN SIG_DFL                                            默认Term动作 a signal handling function 进程处理信号 A默认处理动作 term   中断 core    core(调试的时候产生) gcc –g file.c ulimit –c 1024 gdb a.out core ign      忽略 stop     停止

第9章 进程和信号(一)

本文目录: 9.1 进程的简单说明 9.11 进程和程序的区别 9.12 多任务和cpu时间片 9.13 父子进程及创建进程的方式 9.14 进程的状态 9.15 举例分析进程状态转换过程 9.16 进程结构和子shell 9.2 job任务 9.3 终端和进程的关系 9.4 信号 9.41 需知道的信号 9.42 SIGHUP 9.43 僵尸进程和SIGCHLD 9.44 手动发送信号(kill命令) 9.45 pkill和killall 9.5 fuser和lsof 9.1 进程简单说明 进

Linux进程间通信--进程,信号,管道,消息队列,信号量,共享内存

Linux进程间通信--进程,信号,管道,消息队列,信号量,共享内存 参考:<linux编程从入门到精通>,<Linux C程序设计大全>,<unix环境高级编程> 参考:C和指针学习 说明:本文非常的长,也是为了便于查找和比较,所以放在一起了 Linux 传统的进程间通信有很多,如各类管道.消息队列.内存共享.信号量等等.但它们都无法介于内核态与用户态使用,原因如表 通信方法 无法介于内核态与用户态的原因 管道(不包括命名管道) 局限于父子进程间的通信. 消息队列 在

linux父子进程问题

今天遇到一个linux进程启动时指定Max open files不对的问题,导致程序建立socket异常,进而导致fullgc问题,影响正常服务.所以顺带又温习了下linux下的父子进程的特性. 1.前言 之前在看<unix环境高级编程>第八章进程时候,提到孤儿进程和僵尸进程,一直对这两个概念比较模糊.今天被人问到什么是孤儿进程和僵尸进程,会带来什么问题,怎么解决,我只停留在概念上面,没有深入,倍感惭愧.晚上回来google了一下,再次参考APUE,认真总结一下,加深理解. 2.基本概念 我们

一、进程与信号进程的创建

进程创建 #include <sys/types.h> #include <unistd.h> pid_t fork(void); fork 调用2次,所以又2次返回值,父进程中返回子进程id>0 ,子进程中返回0,出错返回-1 进程实例 #include <unistd.h> #include <string.h> #include <fcntl.h> #include <stdlib.h> #include <stdi

C语言之捕捉信号

我们有时候需要在程序中做一些对于用户或内核发出的信号后的处理,如写回文件等善后处理的事情,或者直接忽略信号(当你按Ctrl+C时我压根不理你).下面是一段信号处理的代码(POSIX C): int catch_signal(int sig,void (*handler)(int)){ struct sigaction action;//<signal.h> action.sa_handler=handler; sigemptyset(&action.sa_mask);//用掩码来过滤s

父子进程

fork 后子进程对父进程的继承 (1)为什么需要创建子进程? 每一个程序的运行都需要进程,创建子进程可以实现宏观上的并行 (2)什么时候需要创建子进程? 当父进程执行到某个阶段,或接收到某个事件后,需要创建一个独立的进程来协助其完成任务时,才需要调用fork创建一个新进程 (3)子进程对父进程的继承 1.为什么要继承父进程的相关资源,参考  http://blog.csdn.net/xlsernt_sina_com/article/details/31350829 摘选了两句话: 父进程创建子

堆栈和父子进程的概念

栈帧:堆栈是C语言程序运行时必须的一个记录调用路径和参数的空间 函数调用框架.传递参数.保存返回地址.提供局部变量空间. 堆和栈的关系: 堆栈一般指的是栈:实际上堆和栈是不同的. 堆需要用户在程序中显性申请,空间由用户维护,释放空间不当会导致内存泄漏:但是栈不用,由系统自动完成. 堆的空间比较大,栈比较小. 栈的生命周期短,随着函数退出和返回消亡:堆的生命周期可以是整个程序执行完成退出,但是一般用户都会在使用时申请空间,不用时释放空间,防止空间消耗完毕. 在fork之后处理的文件描述符有两种常见