当前位置: 首页 > news >正文

Linux的信号栈的实现(1)

作者

pengdonglin137@163.com

环境

Linux 6.5 + ARM64

概述

在前一篇文章中介绍了Linux系统中的几种栈以及它们之间的切换,进程在用户态和内核态会使用不同的栈,在用户态的主线程和其他线程都有各自的栈,此外进程在执行信号处理程序时也需要栈,那么这个栈来自哪呢?

正文

我们还是以一个多线程的用户态可执行程序为例,先看现象,然后再结合Linux内核源码分析实现。

测试程序

介绍一下这个测试程序multi_thread_signal.c,在主线程里给SIGUSR1注册了处理函数,函数的实现很简单,主要就是打印当前的调用栈。然后主线程又创建了两个从线程,此时存在3个线程,这3个线程分别调用各自的func1、func2和func3,最后在func3中进入sleep,目的是方便我们观察调用栈。

#include <pthread.h>
http://www.lryc.cn/news/333597.html

相关文章:

  • Python学习笔记——heapq
  • 搜索与图论——拓扑排序
  • linux CentOS7配置docker的yum源并安装
  • vue结合Elempent-Plus/UI穿梭框更改宽度以及悬浮文本显示
  • 汇川PLC学习Day4:电机参数和气缸控制参数
  • 数据可视化高级技术Echarts(快速上手柱状图进阶操作)
  • 【数据结构与算法】力扣 206. 反转链表
  • 【随笔】Git 高级篇 -- 本地栈式提交 rebase | cherry-pick(十七)
  • 数据结构-- 基于顺序表的通讯录代码讲解
  • qt-C++笔记之QLabel加载图片
  • Unity中UI系统1——GUI
  • GIt 删除某个特定commit
  • Django --静态文件
  • 蓝桥杯第十三届省赛C++B组(未完)
  • 编程生活day7--明明的随机数、6翻了、吃火锅
  • css酷炫边框
  • 使用 Docker 部署 Photopea 在线 PS 工具
  • 回溯法(一)——全排列 全组合 子集问题
  • 【Pt】马灯贴图绘制过程 04-玻璃脏迹
  • Rust 程序设计语言学习——枚举模式匹配
  • 正则表达式(1)
  • nginx + keepalived 搭建教程
  • React事件和原生事件的执行顺序
  • 为什么在计算查询Q和键K的矩阵乘法时需要转置键矩阵K。示例说明q11,k11代表什么。线性变换矩阵 W_q 用于生成查询,W_k 用于生成键怎么获取的。
  • 剑指Offer题目笔记27(动态规划单序列问题)
  • 撸代码时,有哪些习惯一定要坚持?
  • 【leetcode面试经典150题】17.罗马数字转整数(C++)
  • 前后端开发之——文章分类管理
  • 第12届蓝桥杯省赛 ---- C/C++ C组
  • IVS模型解释