首页 > 其他分享 >信号功能实战

信号功能实战

时间:2022-12-17 20:23:42浏览次数:49  
标签:实战 功能 函数 int 线程 信号 sa sigaction

1. 信号简介

       (1)每个线程都有自己的信号屏蔽字。

       (2)每个线程都对同一信号都共享一个信号处理函数。

       (3)当一个线程调用pthread_create() 创建新的线程时,此线程的信号屏蔽字会被新创建的线程继承。

       (4)总之:一个信号可以被没屏蔽它的任何一个线程处理,但是在一个进程内只有一个多个线程共用的处理函数

       (5)当收到某个信号,启动信号处理函数时,通常会屏蔽对该信号,直到信号处理函数执行结束。(系统自动处理,程序员无需干预)

       (6) 单纯的fork会导致 子进程和父进程有相同的信号处理方式。

       (7)单线程中可使用 sigprocmask设置信号屏蔽字;(sigprocmask的行为在多线程的进程中没有定义)

               多线程中每个线程必须使用pthread_sigmask设置本线程的信号屏蔽字。

               

2. 信号相关函数和数据结构

1. struct sigaction结构体 
  struct sigaction
  {
   void (*sa_handler)(int);  //早期的捕捉函数
   void (*sa_sigaction)(int, siginfo_t *, void *);   //新添加的捕捉函数,所以自实现的信号处理函数必须也是这几个参数
   sigset_t sa_mask;    /*阻塞关键字的信号集,可以在调用捕捉函数之前,把信号(包括自身信号)添加到信号阻塞字,信号捕捉函数返回之前恢复为原先的值。防止在执行处理函数时被自己后指定信号打断。*/。
   int sa_flags;    //sa_flags为0表示使用sa_handler;  sa_flags表示使用sa_sigaction
   void (*sa_restorer)(void);    //弃用
  }

2. 设置信号的函数(2个) //signum: 要捕捉的信号
//act: 指定新的信号处理方式
//oldact: 用于保存先前信号的处理方式,一般设置为NULL
//成功则返回0,若出错则返回-1 int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact); //推荐用这个
sighandler_t signal(int signum,sighandler_t handler); //不推荐使用

 

标签:实战,功能,函数,int,线程,信号,sa,sigaction
From: https://www.cnblogs.com/dkhlaojogo/p/16989417.html

相关文章

  • [OpenCV实战]45 基于OpenCV实现图像哈希算法
    目前有许多算法来衡量两幅图像的相似性,本文主要介绍在工程领域最常用的图像相似性算法评价算法:图像哈希算法(imghash)。图像哈希算法通过获取图像的哈希值并比较两幅图像的......
  • [OpenCV实战]43 使用OpenCV进行背景分割
    运动背景分割法BackgroundSegment主要是指通过不同方法拟合模型建立背景图像,将当前帧与背景图像进行相减比较获得运动区域。下图所示为检测图像:通过前面的检测帧建立背景模......
  • [OpenCV实战]46 在OpenCV下应用图像强度变换实现图像对比度均衡
    本文主要介绍基于图像强度变换算法来实现图像对比度均衡。通过图像对比度均衡能够抑制图像中的无效信息,使图像转换为更符合计算机或人处理分析的形式,以提高图像的视觉价值和......
  • [OpenCV实战]3 透明斗篷
    目录​​1寻找和存储背景帧​​​​2红色区域检测​​​​3提取红色区域​​​​4背景帧红布区域替换当前帧红布区域。​​​​5工程代码​​​​参考​​弄出哈利波特电影......
  • [OpenCV实战]16 使用OpenCV实现多目标跟踪
    目录​​1背景介绍​​​​2基于MultiTracker的多目标跟踪​​​​2.1创建单个对象跟踪器​​​​2.2读取视频的第一帧​​​​2.3在第一帧中确定我们跟踪的对象​​​......
  • [OpenCV实战]15 基于深度学习的目标跟踪算法GOTURN
    目录​​1什么是对象跟踪和GOTURN​​​​2在OpenCV中使用GOTURN​​​​3GOTURN优缺点​​​​4参考​​在这篇文章中,我们将学习一种基于深度学习的目标跟踪算法GOTURN......
  • [OpenCV实战]13 OpenCV中使用Mask R-CNN进行对象检测和实例分割
    目录​​1背景介绍​​​​1.1 什么是图像分割和实例分割​​​​1.2Mask-RCNN原理​​​​2Mask-RCNN在OpenCV中的使用​​​​2.1模型下载​​​​2.2模型初始化​......
  • [OpenCV实战]14 使用OpenCV实现单目标跟踪
    目录​​1背景​​​​1.1什么是目标跟踪​​​​1.2跟踪与检测​​​​2OpenCV的目标跟踪函数​​​​2.1函数调用​​​​2.2函数详解​​​​2.3综合评价​​​​......
  • [OpenCV实战]12 使用深度学习和OpenCV进行手部关键点检测
    目录​​1背景​​​​2实现​​​​3.结果和代码​​​​4参考​​手部关键点检测是在手指上找到关节以及在给定图像中找到指尖的过程。它类似于在脸部(面部关键点检测)......
  • [OpenCV实战]9 使用OpenCV寻找平面图形的质心
    目录​​1名词解释​​​​2在OpenCV中查找Blob质心的步骤​​​​3图像多个blob下的质心获取​​​​4参考​​在中学,我们学习了几何的中各种平面图形。找到标准平面图......