【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号信号。


未完待续

相关推荐
量子炒饭大师几秒前
【Linux系统编程】Cyberpunk在霓虹丛林中构建堡垒 ——【关于shell命令及其运行原理】
linux·运维·服务器·shell
夜猫子ing1 分钟前
《嵌入式 Linux 控制服务从零搭建(一):项目立意与架构总览》
linux·嵌入式硬件
IT大白鼠2 分钟前
主流Linux文件系统稳定性及性能分析
linux·运维·服务器·文件系统
南境十里·墨染春水6 分钟前
linux学习进展 I/O复用函数初步
linux·运维·学习
LinuxGeek102412 分钟前
Linux内核“Dirty Frag”漏洞(CVE-2026-43284)修复方案
linux·运维·服务器
曦夜日长15 分钟前
Linux系统篇,权限(一):用户创建与切换、权限及角色定义与修改、文件权限二进制表示
linux·运维·服务器
开开心心就好15 分钟前
支持音视频图片文档的格式转换器
人工智能·学习·游戏·决策树·音视频·动态规划·语音识别
原来是猿15 分钟前
应用层【协议再识/序列化与反序列化】
linux·运维·服务器·网络·网络协议·tcp/ip
2501_9406559716 分钟前
Paperiii 官网入口:www.paperiii.com——2026抖音爆款AI写作工具
人工智能·学习·ai写作
我想我不够好。20 分钟前
2026.5.9消防监控学习 40min
学习