多进程间通信学习之信号通信

  • 进程对信号的处理方式:
  • 1、忽略;
  • 2、默认;
  • 3、捕捉;
  • 发送信号的三种情形:
  • 1、操作系统给进程发送信号;
  • 2、用户给进程发送信号;
  • 3、一个进程给另一个进程发送信号;
  • 信号的本质:
  • 1、信号是中断的一种软件模拟;
  • 2、信号是基于操作系统内核实现;
  • 3、而中断则是基于硬件实现;
  • 信号处理函数(signal函数):
	#include <signal.h>typedef void (*sighandler_t)(int);//给函数指针起别名sighandler_t signal(int signum, sighandler_t handler);/*功能:在进程中注册信号处理函数参数:signum:信号的编号(除了 SIGKILL 和 SIGSTOP之外的)handler:信号处理方式忽略: SIG_IGN默认: SIG_DFL捕捉: 自定义信号处理函数void sig_func(int signum){//捕捉到信号后的处理逻辑}返回值:成功  	返回指向handler的指针失败 	SIG_ERR  重置错误码*/
  • 发送信号的函数(raise函数、kill函数):
  • raise函数:
	#include <signal.h>int raise(int sig);/*功能:给自己发信号参数:信号的编号返回值:成功 0  失败 非0*/
  • kill函数:
	#include <sys/types.h>#include <signal.h>int kill(pid_t pid, int sig);/*功能:给指定pid的进程发信号参数:pid 进程号>0 给指定的pid发信号,常用的用法0  给同组的进程发信号-1 给所有有权限操作的进程发信号,init除外<-1 如-100,给进程组id为100的所有进程发信号sig 信号的编号返回值:成功 0失败 -1 重置错误码*/ 
  • 信号定时器函数(alarm函数):
	#include <unistd.h>unsigned int alarm(unsigned int seconds);/*功能:在指定的秒数到达后,给当前进程发一个SIGALRM信号如果seconds为0 则不发信号参数:seconds:倒计时的秒数返回值:如果之前没有调用过alarm 则返回0如果之前调用过alarm 则返回剩余的秒数*/
  • 常用的信号:
  • SIGHUP: 该信号在用户终端关闭时产生,通常是发给和该终端关联的会话内的所有的进程;
  • SIGINT:该信号在用户键入INTR字符即Ctrl C时产生,内核发送此信号送到当前终端的所有前台进程;
  • SIGQUIT:该信号和SIGINT类似,但由QUIT字符Ctrl \)来产生;
  • SIGILL:该信号在一个进程企图执行一条非法指令时产生;
  • SIGSEV:该信号在非法访问内存时产生,如野指针、缓存区溢出;
  • SIGPIPE:当进程往一个没有读端的管道中写入时产生,代表管道断裂
  • SIGKILL:该信号用来结束进程,并且不能被捕捉和忽略;
  • SIGSTOP:该信号用来暂停进程,并且不能被捕捉和忽略;
  • SIGTSTP:该信号用于暂停进程,用户可键入SUSP字符Ctrl Z)发出这个信号;
  • SIGCONT:该信号让进程进入运行态
  • SIGALRM:该信号用于通知进程定时器时间已到;
  • SIGCHLD :当子进程退出的时候,会给父进程发送该信号;
  • SIGUSR1、SIGUSR2:该信号保留给用户程序使用;
  • 注意:
  • 只有SIGKILLSIGSTOP不能被忽略和捕捉;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/126494.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JWT的头部、载荷和签名分别包含哪些信息?

JWT&#xff08;JSON Web Token&#xff09;由三部分组成&#xff1a;头部&#xff08;Header&#xff09;、载荷&#xff08;Payload&#xff09;和签名&#xff08;Signature&#xff09;。每个部分都是经过Base64编码的JSON字符串。 1&#xff1a;头部&#xff08;Header&a…

正点原子嵌入式linux驱动开发——Linux CAN驱动

CAN是目前应用非常广泛的现场总线之一&#xff0c;主要应用于汽车电子和工业领域&#xff0c;尤其是汽车领域&#xff0c;汽车上大量的传感器与模块都是通过CAN总线连接起来的。CAN总线目前是自动化领域发展的热点技术之一&#xff0c;由于其高可靠性&#xff0c;CAN总线目前广…

java进行支付宝支付(沙箱环境)

目录 1.准备工作 2.idea配置文件准备 3.后端代码编写 接口1&#xff1a;支付订单 接口2&#xff1a;查询订单 接口3&#xff1a;订单退款 接口4&#xff1a;查询退款结果 接口5&#xff1a;获取总账单 接口6&#xff1a;取消订单 接口7&#xff1a;回调接口 定时任务…

P4345 [SHOI2015] 超能粒子炮·改 题解---------Lucas定理

题面&#xff1a; 题目 题意概括&#xff1a; T T T 次询问&#xff0c;每次给出 n , k n,k n,k&#xff0c;求 ∑ i 0 k C n i % 2333 \sum_{i 0}^{k} C_{n}^{i} \ \% \ 2333 ∑i0k​Cni​ % 2333。 1 ≤ T ≤ 1 0 5 &#xff0c; 1 ≤ n , k ≤ 1 0 18 1\leq T \leq10^5…

docker环境安装+maven依赖继承问题

1&#xff0c;docker环境安装 我们使用yum指令进行安装&#xff0c;分别cmd运行&#xff1a; yum install -y yum-utils device-mapper-persistent-data lvm2 yum-contig-manager --add-repo https://download.docker.com/linux/centos/docker-ce.rep具体解释如下&#xff1a;…

Android 事件分发面试题

序、慢慢来才是最快的方法。 Android 2020年面试系列&#xff08;02 — View事件分发&#xff09;_view事件分发 2020-CSDN博客 1. Touch事件如何从屏幕到我们的App。 硬件与内核部分 当我们触摸屏幕或者按键操作时&#xff0c;首先触发的是硬件驱动 驱动收到事件后&#xf…

如何创建 SpringBoot 多模块项目

1. 创建父模块 【添加依赖】 【删除父模块资源】 父模块只需要保留 pom.xml&#xff0c;其他文件的全部删除&#xff08;包括 src&#xff09; 2. 创建子模块 3. 修改父模块 3.1 删除不必要的依赖 3.2 添加打包类型 3.3 添加所有子模块 声明子模块有两个好处&#xff1a; …

Pytorch 注意力机制解析与代码实现

什么是注意力机制 注意力机制是深度学习常用的一个小技巧&#xff0c;它有多种多样的实现形式&#xff0c;尽管实现方式多样&#xff0c;但是每一种注意力机制的实现的核心都是类似的&#xff0c;就是注意力。 注意力机制的核心重点就是让网络关注到它更需要关注的地方。 当…

什么是 CNN? 卷积神经网络? 怎么用 CNN 进行分类?(3)

参考视频&#xff1a;https://www.youtube.com/watch?vE5Z7FQp7AQQ&listPLuhqtP7jdD8CD6rOWy20INGM44kULvrHu 视频7&#xff1a;CNN 的全局架构 卷积层除了做卷积操作外&#xff0c;还要加上 bias &#xff0c;再经过非线性的函数&#xff0c;这么做的原因是 “scaled p…

电压放大器在压电陶瓷致动器中的应用有哪些

电压放大器在压电陶瓷致动器中有多种应用。压电陶瓷致动器是一种能够将电能转化为机械能的装置&#xff0c;通过施加电压来使陶瓷材料发生形变或振动。它在许多领域中得到广泛应用&#xff0c;如精密定位、振动控制、压力控制等。下面安泰电子将详细介绍电压放大器在压电陶瓷致…

java修仙基石篇->instanceof子父类检查

instanceof检查子父类&#xff08;或者是否能被强转&#xff09; 作用1&#xff1a;检查某对象是否是某类的子类 如&#xff1a;儿子类继承了父亲类。 检查儿子类对象是否属于父亲类 作用2&#xff1a;检查两个对象是否可以强转 语法&#xff1a; 子类对象 instanceof 父…

物联网智慧种植农业大棚系统

物联网智慧种植农业大棚系统 项目背景 智慧农业是是将物联网技术和农业生产箱管理的新型农业&#xff0c;依托部署在农业生产现场的各种传感节点&#xff0c;以物联网网关为通道形成数据传输网络&#xff0c;可以实现控制柜、环境监测传感器、气象监测机器等设备的远程监控&a…

【开题报告】基于SpringBoot的医美在线预约系统的设计与实现

1.研究背景 医美行业是指结合医学和美容技术&#xff0c;为人们提供外貌改善和整容手术等服务的领域。随着社会经济的发展和人们审美观念的变化&#xff0c;医美行业得到了快速的发展&#xff0c;并受到越来越多人的关注和需求。 传统的医美预约方式主要依赖于电话预约或现场…

大数据之LibrA数据库系统告警处理(ALM-12006 节点故障)

告警解释 Controller按30秒周期检测NodeAgent状态。当Controller连续三次未接收到某个NodeAgent的状态报告时&#xff0c;产生该告警。 当Controller可以正常接收时&#xff0c;告警恢复。 告警属性 告警ID 告警级别 可自动清除 12006 严重 是 告警参数 参数名称 参…

【计算机网络】数据链路层——以太网

文章目录 前言什么是以太网以太网帧格式6位目的地址和源地址2位类型数据长度CRC 校验和 数据在数据链路层是如何转发的 前言 前面我们学习了关于应用层——自定义协议、传输层——UDP、TCP协议、网络层——IP协议&#xff0c;今天我将为大家分享关于数据链路层——以太网方面的…

C++ 如何快速确定新旧线程

在C中&#xff0c;您可以使用一些方法来快速区分是否当前代码正在主线程中执行还是在一个新线程中执行。以下是一些方法&#xff1a; std::this_thread::get_id()&#xff1a; 使用std::this_thread::get_id()可以获取当前线程的唯一标识符。您可以将主线程的ID与新线程的ID进行…

C语言 DAY08 指针01

1.概述 地址编号&#xff1a;地址编号:就是计算机为了存储数据,每一个程序在32机中占4G,以一个字节为最小单位进行操作,每一个字节都有其对应的地址,该地址就是地址编。 指针&#xff1a;地址编号的数据类型 指针变量&#xff1a;存储地址编号的变量,其数据类型为指针 在32位…

【Java-代码-A02】(00) 通过Java遍历文件夹,快速上手;

前言 【描述】 通过"Java"遍历文件夹下的所有文件&#xff0c;快速上手&#xff1b; 【环境】 系统"Windows"&#xff0c;软件"IntelliJ IDEA 2021.1.3(Ultimate Edition)"&#xff1b;“Java版本"1.8.0_202”&#xff1b; 实操 【第一步…

SQL练习(牛客网非技术快速入门)

SQL3 查询结果去重 题目&#xff1a;现在运营需要查看用户来自于哪些学校&#xff0c;请从用户信息表中取出学校的去重数据。 示例:user_profile iddevice_idgenderageuniversityprovince12138male21北京大学Beijing23214male复旦大学Shanghai36543female20北京大学Beijing4…

Python武器库开发-常用模块之OS模块(十一)

常用模块之OS模块(十一) Python中的 os 模块提供了非常丰富的方法用来处理文件和目录&#xff0c;可以执行一些操作系统的功能。常用的方法如下表所示&#xff1a; 序号方法描述1os.access(path, mode)检验权限模式2os.chdir(path)改变当前工作目录3os.chflags(path, flags)设…