11-LINUX--信号

一.信号的基本概念

信号是系统响应某个条件而产生的事件,进程接收到信号会执行相应的操作。
与信号有关的系统调用在“signal.h”头文件中有声明
常见信号的值,及对应的功能说明:
信号的值在系统源码中的定义如下:
1. #define SIGHUP 1
2. #define SIGINT 2 //键盘按下 Ctrl+c 时,会产生该信号
3. #define SIGQUIT 3
4. #define SIGILL 4
5. #define SIGTRAP 5
6. #define SIGABRT 6
7. #define SIGIOT 6
8. #define SIGBUS 7
9. #define SIGFPE 8
10. #define SIGKILL 9 //该信号的响应方式不允许改变
11. #define SIGUSR1 10
12. #define SIGSEGV 11
13. #define SIGUSR2 12
14. #define SIGPIPE 13 //读端关闭的描述符,写端写入时产生,该信号会终止程序
15. #define SIGALRM 14
16. #define SIGTERM 15 //系统 kill 命令默认发送的信号
17. #define SIGSTKFLT 16
18. #define SIGCHLD 17 //子进程结束后,会默认给父进程发送该信号
19. #define SIGCONT 18
20. #define SIGSTOP 19
21. #define SIGTSTP 20
22. #define SIGTTIN 21
23. #define SIGTTOU 22
24. #define SIGURG 23

二.修改信号的响应方式

1.信号的三种响应方式

 (1).默认:SIG_DFL;按照信号的默认程序执行

 (2).忽略:SIG_IGN;忽略信号,不做出响应

 (3).自定义:自己设计信号处理函数

在键盘上按下 Ctrl+c 时,会给当前终端前台执行的进程发送 SIGINT 信号,用 signal 修
改 SIGINT 信号的响应方式示例代码如下:
 #include<stdio.h>
 #include<stdlib.h>
 #include<unistd.h>
 #include<string.h>
 #include<assert.h>
 #include <signal.h>
 void fun(int sign)
{
 printf("fun was called, sign = %d\n", sign);
 }

 int main()
 {
 signal(SIGINT, fun);
 while(1)
 {
 sleep(1);
 printf("main running\n");
 }
 exit(0);
 }
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<signal.h>
#include<unistd.h>

void fun(int sig)
{
        printf("sig=%d\n",sig);
        signal(SIGINT,SIG_DFL);//第二次按默认方式进行
        //signal(sig,SIG_DFL);
}

int main()
{
        signal(SIGINT,fun);//自定义
//      signal(SIGINT,SIG_IGN);//忽略
        while(1)
        {
                printf("hello,  pid=%d\n",getpid());
                sleep(1);
        }
}

三.发送信号

kill() 可以向指定的进程发送指定的信号:
      int kill(pid_t pid, int sig);
      pid > 0 指定将信号发送个那个进程
      pid == 0 信号被发送到和当前进程在同一个进程组的进程
      pid == -1 将信号发送给系统上有权限发送的所有的进程
      pid < -1 将信号发送给进程组 id 等于 pid 绝对值,并且有权限发送的所有的进程。
      sig 指定发送信号的类型。
使用 kill()系统调用实现类似于系统 kill 命令的程序如下:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<signal.h>
#include<unistd.h>
// ./main 3455 2
int main(int argc ,char* argv[])
{
        if(argc != 3)
        {
                printf("main err\n");
                exit(0);
        }

        int pid = 0;
        int sig = 0;
        sscanf(argv[1],"%d",&pid);
        sscanf(argv[2],"%d",&sig);

        if(kill(pid,sig) == -1)
        {
                printf("mykill err\n");
        }
        exit(0);
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JVM 组成

文章目录 概要JVM 是 Java程序的运行环境&#xff08;java二进制字节码的运行环境&#xff09;JVM 的主要组成部分运行流程&#xff1a;程序计数器堆元空间方法区常量池运行时常量池 概要 JVM 是 Java程序的运行环境&#xff08;java二进制字节码的运行环境&#xff09; 好处&…

BugKu: Simple_SSSTI_2

1.打开题目 由提示可知需要传入一个名为flag的参数 2.查看网页源代码 并没有得到有用的信息 3.查看config对象 http://114.67.175.224:10934/?flag{{config}} 信息太乱了&#xff0c;需要找到我们需要的信息 4.SSTI模版注入 http://114.67.175.224:10934/?flag{{ conf…

解决报错 由于目标计算机积极拒绝,无法连接

完整错误&#xff1a; WARNING: Retrying (Retry(total0, connectNone, readNone, redirectNone, statusNone)) after connection broken by ProxyError(Cannot connect to proxy., NewConnectionError(<pip._vendor.urllib3.connection.HTTPConnection object at 0x000002…

MySql并发事务问题

事务 事务概念&#xff1a; 事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 事务的特性&#xff1a;ACID&#xff1a; 小…

Chapter 18 Current-Programmed Control 峰值电流模控制

Chapter 18 Current-Programmed Control 峰值电流模控制 对于PWM converter, 其输出电压由占空比d控制. 我们将直接控制占空比d称为电压模控制, 因为输出电压和占空比成正比.还有一种广泛应用的控制方法是控制开关管峰值电流的. 我们称为电流模控制. 这一章介绍峰值电流模控制…

UML2.0在系统设计中的实际使用情况

目前我在系统分析设计过程中主要使用UML2.0来表达&#xff0c;使用StarUML软件做实际设计&#xff0c;操作起来基本很顺手&#xff0c;下面整理一下自己的使用情况。 1. UML2.0之十三张图 UML2.0一共13张图&#xff0c;可以分为两大类&#xff1a;结构图-静态图&#xff0c;行…

【轻松一刻】中国茶叶探索奇妙之旅

文章目录 茶多酚 茶叶大类 龙井茶 泡茶方法 茶叶保存 参考资料 茶多酚 茶多酚是形成茶叶色香味的主要成份之一&#xff0c;也是茶叶中有保健功能的主要成份之一。茶多酚的副产品咖啡因&#xff0c;又称为咖啡碱&#xff0c;能兴奋大脑皮层&#xff0c;所以喝茶有提神作用…

代码随想录-算法训练营day04【两两交换链表中的节点、删除链表的倒数第N个节点、链表相交、环形链表II】

专栏笔记&#xff1a;https://blog.csdn.net/weixin_44949135/category_10335122.html 第二章 链表part02● day 1 任务以及具体安排&#xff1a;https://docs.qq.com/doc/DUG9UR2ZUc3BjRUdY ● day 2 任务以及具体安排&#xff1a;https://docs.qq.com/doc/DUGRwWXNOVEpyaVpG…

【原创】springboot+vue校园座位预约管理系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

Vivado功耗基础之功耗评估器XPE使用详述

目录 一、前言 二、XPE环境配置 2.1 XLSM下载 2.2 EXCEL启用宏 2.3 打开XLSM 三、XPE操作 3.1 单元格颜色含义 3.2 Settings表格 3.3 片上功耗表格 3.4 电源供电表格 3.5 总结表格 3.6 工具栏 四、参考资料 一、前言 XPE(Xilinx Power Estimator)是一个在工程的预…

【C++航海王:追寻罗杰的编程之路】C++的类型转换

目录 1 -> C语言中的类型转换 2 -> 为什么C需要四种类型转换 3 -> C强制类型转换 3.1 -> static_cast 3.2 -> reinterpret_cast 3.3 -> const_cast 3.4 -> dynamic_cast 4 -> RTTI 1 -> C语言中的类型转换 在C语言中&#xff0c;如果赋值运…

八股面试速成—Java语法部分

暑期实习面试在即&#xff0c;这几天八股和算法轮扁我>_ 八股部分打算先找学习视屏跟着画下思维导图&#xff0c;然后看详细的面试知识点&#xff0c;最后刷题 其中导图包含的是常考的题&#xff0c;按照思维导图形式整理&#xff0c;会在复盘后更新 细节研究侧重补全&a…

15.5 二叉排序树原理及建树实战

二叉树模拟网站&#xff1a;Binary Search Tree Visualization (usfca.edu) 图 代码&#xff1a; #include <stdio.h> #include <stdlib.h> typedef int KeyType; typedef struct BSTNode{KeyType key;struct BSTNode *lchild, *rchild; }BSTNode, *BiTree; int …

[报错解决]源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。

目录 报错信息解决办法 spring整合mvc时&#xff0c;遇到的404报错&#xff0c;梳理mvc知识供参考供 报错信息 解决办法 Controller RequestMapping("user") public class UserController {//spring整合webmvc// 请求地址 http://localhost:7070/user/quickRequest…

【游戏分析】非游戏领空追字符串来源

通过NPC名称找NPC数组 扫描 NPC名字 ASIC型 发现全部都有后缀 那么采用 字节集的方式去扫描 也是扫不到 说明:不是ASIC型字符串 扫描 NPC名字 Unicode型 没有结果 那么转换成字节集去扫描 终于发现结果了 把结果挨个修改字符串 发现 其中两个是可以用的 22和23 …

SAR教程系列7——在cadence中用Spectrum工具FFT仿真ADC的ENOB、SNR等动态性能指标

首先在仿真之前&#xff0c;你得有一个ADC。然后是思考如何仿真的问题&#xff0c;如何加激励&#xff0c;如何使用相关工具查看仿真结果。假定你有一个可以仿真的ADC&#xff0c;大致经过下列步骤可以得到ADC的相关动态性能指标。 第一步&#xff1a;在ADC后面接一个理想的DA…

实战解析:接口限流的一次简单实践

1.写这篇文章的来由 有一段时间里&#xff0c;博客总是三天两头被打&#xff0c;其中就遇到了恶意刷接口的手段&#xff0c;对方明显使用的代码IP&#xff0c;由于博客并没有做这方面的措施&#xff0c;加上被大量盗刷的接口刚好是数据量最大的一篇文章数据&#xff0c;所以不…

MySql下载安装及使用

1.MySql下载 下载页 解压到想要安装的目录 2.配置系统环境 以管理员身份运行cmd命令行&#xff1a;输入mysql 回车&#xff0c;输出以下内容&#xff0c;表示mysql安装好了 3.初始化mysql(不设置无密码)&#xff0c;执行以下命令 mysqld --initialize-insecure执行这个命…

web学习笔记(五十三)身份认证

目录 1.Web 开发模式 1.1 服务端渲染的 Web 开发模式 1.2 服务端渲染的优缺点 1.3 前后端分离的 Web 开发模式 1.4 如何选择 Web 开发模式 2. 身份认证 2.1 Session 认证机制 3. 在 Express 中使用 Session 认证 3.1 安装express-session 中间件 3.2 配置 express-ses…

课程16 吸收·色散·散射(视频P55-P60)

吸收 色散 散射 吸收、色散、散射并称为分子光学&#xff1b;在一介质中&#xff0c;光的强度随传播距离而减少的现象&#xff0c;称为介质对光的吸收&#xff1b;介质的不均匀性将导致光的散射&#xff0c;散射到各个方向。光在介质中的传播速度小于真空光速&#xff0c;最终…