【Linux】进程信号_1

文章目录


八、进程信号

1.信号

信号和信号量之间没有任何关系。信号是Linux系统提供的让用户/进程给其他进程发送异步信息的一种方式。

常见信号:

当信号产生时,可选的处理方式有三种:①忽略此信号。②执行该信号的默认处理动作。③自定义处理信号,这种方式称为捕捉(Catch)一个信号。

可以使用 kill -9 杀掉指定进程。

kill -2 可以终止指定进程。不是杀死的。

接下来我们让进程对2号信号做出自定义行为。需要使用 signal 函数。

Makefile:

cpp 复制代码
testSig:Signal.cc
	g++ -o $@ $^ -std=c++11
.PHONY:clean
clean:
	rm -f testSig

Signal.cc

cpp 复制代码
#include <iostream>
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>
using namespace std;

void handler(int signo)
{
    // 打印收到的信号
    cout << "get a signal : " << signo << endl;
}

int main()
{
    signal(SIGINT, handler);
    
    while (true)
    {
        cout << "I am activing, pid : " << getpid() << endl;
        sleep(1);
    }
    return 0;
}

此时进程当接收到2号信号时,就输出了一句话并没有终止进程。

cpp 复制代码
// 忽略信号 ignore
    signal(SIGINT, SIG_IGN);

当 signal 函数这样设置时,就代表将 SIGINT 信号忽略。
信号可以由 kill 命令产生,也能够从键盘上产生。比如 键盘上的 Ctrl + C 会被操作系统解释成2号信号。


未完待续

相关推荐
向上的车轮10 分钟前
openEuler 内核解读(五):Linux 内核模块 “Hello World” 示例
linux·openeuler
程序猿36516 分钟前
动词大全整理
学习
Coder个人博客20 分钟前
Linux6.19-ARM64 mm proc子模块深入分析
linux·安全·车载系统·系统架构·系统安全·鸿蒙系统·安全架构
学嵌入式的小杨同学20 分钟前
【嵌入式 Linux 实战 1】Ubuntu 环境搭建 + 目录结构详解:嵌入式开发入门第一步
linux·c语言·开发语言·数据结构·vscode·vim·unix
optimistic_chen24 分钟前
【Redis系列】分布式锁
linux·数据库·redis·分布式·缓存
编程大师哥25 分钟前
新手学习编程从哪个语言开始
学习
⑩-26 分钟前
Vue框架学习
前端·vue.js·学习
xiaoliuliu1234533 分钟前
openssl-libs-1.1.1f-4.p12.ky10.x86_64.rpm 安装指南 解决依赖与常见报错
linux
重生之绝世牛码33 分钟前
Linux软件安装 —— PostgreSQL集群安装(主从复制集群)
大数据·linux·运维·数据库·postgresql·软件安装·postgresql主从集群
LIZHUOLONG140 分钟前
AI 系统学习路径
人工智能·学习