函数signal

1. 函数signal

#include <signal.h>
void (*signal(int sig,void (*func)(int)))(int)typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);

分析:

  • signal参数信号名,func的值是SIG_ING、SIG_DFL或接到此信号后要调用的函数的地址
  • 如果指定SIG_ING,则向内核表示忽略此信号(记住有两个信号SIGKILL和SIGSTOP不能忽略)
  • 如果指定SIG_DEFL,则表示接到此信号后的动作是系统默认动作
  • 当指定函数地址时, 则在此信号发生时,调用该函数,我们称这种处理为捕捉该信号。

 

2. 测试代码

1. 测试代码:

#include<signal.h>
#include<stdio.h>
#include<unistd.h>void sig_usr(int signo)
{if(signo == SIGUSR1)printf("receive SIGUSR1\n");else if(signo == SIGUSR2)printf("receive SIGUSR2\n");elseperror("signal error");
}int main()
{if(signal(SIGUSR1, sig_usr) == SIG_ERR)perror("can't catch SIGUSR1");if(signal(SIGUSR2, sig_usr) == SIG_ERR)perror("can't catch SIGUSR2");for( ; ; )sleep(1);return 0;
}

输出结果:

 

2. 测试代码:

#include <signal.h>
#include <stdio.h>
#include <errno.h>typedef void(*sighandler_t) (int);
void catchsigiht(int signo)
{printf("-----------------------------------catch\n");
}int main()
{sighandler_t handler;handler = signal(SIGINT, catchsigint);if (handler == SIG_ERR) {perror("signal error");exit(1);}while (1);return 0;
}

输出结果:

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

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

相关文章

三面美团Java岗,java架构师线下培训

性能优化专栏 1.Tomcat性能优化整理 2.JVM性能优化专题 3.Mysql性能优化整理 微服务架构面试专栏 1.SpringCloud面试整理 2.SpringBoot面试整理 3.Dubbo面试整理 并发编程高级面试专栏 开源框架面试题专栏 1.Spring面试整理 2.SpringMVC面试整理 3.MyBatis面试整理 分布式面…

信号 09 | SIGCLD语义

1. SIGCLD信号 SIG_DFL &#xff1a;默认的处理方式是不理会这个信号&#xff0c;但是也不会丢弃子进程状态&#xff0c;所以如果不用wait&#xff0c;waitpid对其子进行进行状态信息回收&#xff0c;会产生僵尸进程。SIG_IGN &#xff1a;忽略的处理方式&#xff0c;这个方式…

三面美团Java岗,java电子书下载百度云

Spring 全家桶&#xff1a; Spring 原理Spring面试题思维导图面试题Spring视频 Spring 原理 Spring特点Spring 核心组件Spring常用模块Spring主要包Spring常用注解Sping第三方结合Spring 10C原理Spring APO原理Spring MVC原理Spring Boot原理JPA原理Mybatis缓存Tomcat架构 Sp…

【信号】函数kill、raise、abort、alarm

一、函数kill 1. kill函数原型&#xff1a; int kill(pid_t pid, int signo); //signo:信号名分析&#xff1a; pid > 0&#xff1a; 发送信号给指定的进程pid 0&#xff1a; 发送信号给调用kill函数进程属于同一个进程组的所有进程pid < 0&#xff1a;信号signo将…

三面美团Java岗,尚学堂java马士兵全套

SpringBoot经典之作 进入Spring Boot世界 准备开发环境搭建开发工具 基础 Spring Boot基础分层开发Web应用程序响应式编程 进阶 Spring Boot进阶用ORM操作SQL数据库接口架构风格——RESTful集成安全框架&#xff0c;实现安全认证和授权集成Redis&#xff0c;实现高并发集成R…

信号 09 | 信号概念

信号的概念 信号在我们的生活随处可见&#xff0c;如&#xff1a;古代战争中摔杯为号&#xff1b;代战争中的信号弹&#xff1b;体育比赛中使用的信号枪&#xff0c;它们都有共性&#xff1a;1. 简单 2. 不能携带大量的信息 3. 满足某个特定条件才发送 信号是信息的载体&…

一招彻底帮你搞定HashMap源码,项目实战

ES 集群架构演进之路 1、初始阶段 订单中心ES初始阶段如一张白纸&#xff0c;架设方案基本没有&#xff0c;很多配置都是保持集群默认配置。整个集群部署在集团的弹性云上&#xff0c;ES集群的节点以及机器部署都比较混乱。同时按照集群维度来看&#xff0c;一个ES集群会有单…

【信号】信号集、sigprocmask、sigpending

一、信号集操作函数 内核通过读取未决信号集来判断信号是否应被处理。信号屏蔽字mask可以影响未决信号集。而我们可以在用程序自定义set来改变mask&#xff0c;来达到屏蔽指定信号目的。 sigset_t set; // typedef unsigned long sig…

一招让你拿下seata分布式事务框架,看这篇文章准没错!

第一阶段&#xff1a;架构师筑基必备技能 我觉得&#xff0c;但凡是个成年人应该都清楚扎实的基本功对自己的工作帮助有多重要。从各大招聘网站的招聘要求来看&#xff0c;第一条都明确说明需要扎实的Java基础。因此&#xff0c;一般笔试以及面试的第一轮&#xff0c;对基础的…

函数signal、sigaction

二、函数sigaction 修改信号处理动作(通常在Linux用来注册一个信号的捕捉函数) #inlcude<signal.h> int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact); 参数&#xff1a; act&am…

一文了解OOM及解决方案,你还看不明白?

InnoDB总体结构 首先我们来看官网的一张图(图片来源于MySQL官网)&#xff1a; 从上图中可以看出其主要分为两部分结构&#xff0c;一部分为内存中的结构(上图左边)&#xff0c;一部分为磁盘中的结构(上图右边) 内存结构 InnoDB内存中的结构主要分为&#xff1a;Buffer Pool,…

信号 09 | 函数pause

函数pause 调用该函数可以造成进程主动挂起&#xff0c;等待信号唤醒&#xff0c;调用该系统调用的进程处于阻塞状态(主动放弃CPU)直到有信号递达将其唤醒。 将进程置为可中断睡眠状态。然后 它调用schedule()&#xff0c;使linux进程调度器找到另一个进程来运行。pause使调用…

一文搞懂JVM架构和运行时数据区,全网最新

1.Java基础面试知识点 Java中和equals和hashCode的区别int、char、long各占多少字节数int与integer的区别探探对Java多态的理解String、StringBuffer、StringBuilder区别什么是内部类&#xff1f;内部类的作用抽象类和接口区别抽象类的意义抽象类与接口的应用场景抽象类是否可…

一条正确的Java职业生涯规划,帮你突破瓶颈

面试题模块介绍&#xff1a; 一、Java 基础 JDK 和 JRE 有什么区别&#xff1f; 和 equals 的区别是什么&#xff1f;两个对象的 hashCode()相同&#xff0c;则 equals()也一定为 true&#xff0c;对吗&#xff1f;final 在 java 中有什么作用&#xff1f;java 中的 Math.roun…

【线程】线程基本函数

一、pthread_self函数 功能&#xff1a;获取线程ID。 pthread_t pthread_self(void); 线程ID&#xff1a;pthread_t类型&#xff0c;本质&#xff1a;在Linux为无符号整数(%lu)&#xff0c;其他系统可能是结构体实现线程ID是进程内部识别标志。&#xff08;两个进程间&#…

一条正确的Java职业生涯规划,顺利通过阿里Java岗面试

珍藏版&#xff08;1&#xff09;——Mybatis入门 1.什么是MyBatis 2.为什么我们要用Mybatis? 3.Mybatis快速入门 3.1 导入开发包 3.2准备测试工作 3.3 创建mybatis配置文件 3.4 编写工具类测试是否获取到连接 3.5 创建实体与映射关系文件 3.6 编写DAO 4.Mybatis工作…

一次违反常规的Java大厂面试经历,系列教学

第一部分 Java相关以及答案 答案 第二部分算法跟编程 第三部分html&JavaScript&ajax部分 答案 第四部分Javaweb部分 答案 第五部分数据库部分 答案 第六部分XML部分 答案 第七部分.流行的框架与新技术 答案 第八、九部分.软件工程与设计模式以及j2ee部分 最后 笔者…

一次违反常规的Java大厂面试经历,重难点整理

目录 Kafka的基本介绍Kafka的设计原理分析Kafka数据传输的事务特点Kafka消息存储格式副本&#xff08;replication&#xff09;策略Kafka消息分组&#xff0c;消息消费原理Kafak顺序写入与数据读取消费者&#xff08;读取数据&#xff09; Kafka的基本介绍 Kafka是最初由Lin…

一步搞定你疑惑的数据结构与算法系列,原理+实战讲解

蚂蚁金服一面&#xff1a; 下午杭州的电话&#xff0c;问有没有空&#xff0c;果断有空&#xff0c;虽然感觉略显紧张&#xff0c;有点懵逼。 面试的题目&#xff1a; HashMap和Hashtable的区别实现一个保证迭代顺序的HashMap说一说排序算法&#xff0c;稳定性&#xff0c;复…

互斥量(互斥锁)

一、互斥量mutex Linux提供一把互斥锁mutex(也称之为互斥量)每个线程在对资源操作前都尝试先加锁&#xff0c;成功加锁才能操作&#xff0c;操作结束后解锁。资源还是共享的&#xff0c;线程间也还是竞争的&#xff0c;但通过锁将资源的访问变为互斥操作&#xff0c;而后与时间…