IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 3.4Linux 信号 -> 正文阅读

[系统运维]3.4Linux 信号

供参考:Linux 信号(signal)

查看系统名称以及序号:kill -l

信号处理的三种方式:忽略、捕捉和默认动作
忽略动作:对 SIGKILL 和 SIGSTOP 无效
捕捉动作:用户将信号告诉内核
默认动作:由默认的处理动作,自动执行

./a.out程序是个死循环,通过终端 kill 命令发送信号,将进程终止
在这里插入图片描述

代码演示:signal配合 终端killl 指令

//SIGNAL_KILL.c
//gcc SIGNAL_KILL.c -o SIGNAL_KILL
#include <signal.h>
#include <stdio.h>

void handler(int signum)
{
        switch(signum){
                case 2:
                        printf("SIGINT\n");
                        break;
                case 3:
                        printf("SIGQUIT\n");
                        break;
                case 9:
                        printf("SIGKILL\n");
        }

}
int main()
{
        signal(SIGINT,handler);
        signal(SIGQUIT,handler);
        signal(SIGKILL,handler);
        while(1);

        return 0;
}

通过终端指令向进程发送信号,进程会打印相应的信号
但是发送 “SIGKILL” 信号,不会打印相应的信号,会被直接终止进程(SIGKILL 和 SIGSTOP 信号无法被忽略)
在这里插入图片描述

代码演示:signal配合 自制指令

#include <sys/types.h>
#include <signal.h>
#include <stdio.h>

int main(int argc, char **argv)
{
        int pid;
        int signum;
        char cmd[128]={0};

        pid = atoi(argv[2]);	//字符串转为整型
        signum = atoi(argv[1]);

        sprintf(cmd,"kill -%d %d",signum,pid);	//将指令存放在cmd中
        system(cmd);	//将cmd的指令通过函数system发送
        
//      kill(pid,signum); //这是第二种:使用函数kill
        return 0;
}

在这里插入图片描述

SIG_IGN(忽略信号)

#include <stdio.h>
#include <signal.h>
void handler(int signum)
{
	printf("SIGINT\n");
}
int main()
{
        signal(SIGINT,SIG_IGN);

        while(1);
        return 0;
}

当该程序运行时,按 “ctrl+c” 程序不会退出(不执行该行代码,直接忽略);终止程序,要用终端 kill 命令终止
若signal(SIGKILL,SIG_IGN),当该程序运行时,按 “ctrl+c” 程序直接退出(无法忽略)

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-17 15:47:33  更:2021-08-17 15:49:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 9:20:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码