首页 > 系统相关 >Linux 信号

Linux 信号

时间:2022-08-25 11:45:19浏览次数:37  
标签:函数 阻塞 屏蔽 信号 Linux 进程 sa

https://blog.csdn.net/w903414/article/details/109802539

信号

产生信号的情况:

信号的3种处理方式:

系统默认动作“终止+core”表示在进程当前工作目录的core文件中复制了该进程的内存映像。大多数UNIX系统调试程序都使用core文件检查进程终止时的状态。

信号的详细介绍:

处理信号

使用 sigaction 代替 signal

事件发生时为进程产生一个信号,内核通常在进程表中以某种形式设置一个标志。当对信号采取了这种动作,称为向进程传递了一个信号。信号产生和递送之间的时间间隔内称信号是未决的。

进程可以选用“阻塞信号递送”。如果为进程产生了一个阻塞信号,而且对该信号的动作是系统默认动作或捕捉该信号,则此信号保持未决状态,直到该进程对此信号解除阻塞,或将动作改为忽略。内核在递送一个原来被阻塞的信号给进程时(而不是在产生此信号时),才决定对它的处理方式。于是进程在信号递送给它之前仍可以改变对该信号的动作。进程调用sigpending函数来判定哪些信号是设置为阻塞并处于未决状态的。

发送信号 kill raise

raise(signo) 等于 kill(getpid(), signo)

信号集

表示多个信号的数据类型。因数量太多,不能用整形量的一位或一个整形量表示信号。使用sigset_t表示信号集。

初始化时使用sigemptyset或sigfillset将set设为空或所有信号集合。

sigprocmask

仅为单线程定义,多线程中信号屏蔽使用另一个函数

一个进程的信号屏蔽字规定了当前阻塞而不能传递给该进程的信号集。调用sigprocmask可以检测修改信号屏蔽字。

how的可选值:

SIG_BLOCK是或操作,SIG_UNBLOCK是异或,SIG_SETMASK是赋值

sigpending

返回一信号集,对于调用进程,其中各信号是阻塞不能递送的,因而也一定是当前未决的。该信号集通过set参数返回。

在sleep休眠期间产生了某信号,那么此时该信号是未决的,但是不再受阻塞。

sigaction

检查、修改与指定信号关联的处理动作。用于取代sinal函数

当sa_handler字段包含一个信号捕捉函数的地址(不是SIG_IGN或SIG_DFL),则sa_mask字段说明了一个信号集,调用信号捕捉函数前这各信号集要加到进程的信号屏蔽字中,当信号捕捉函数返回时再恢复屏蔽字。这样调用信号处理函数时可以阻塞某些信号。某种信号被阻塞时,如果它发生了多次,那么这种信号解除阻塞后,其信号处理函数通常只会被调用一次。

sa_flags 可选项:

再sigaction结构中使用了 SA_SIGINFO 标志时,使用 sa_sigaction 字段的替代处理程序。sa_sigaction  与 sa_handler 只能选用一个。

sigsetjmp  siglongjmp

用于非局部返回的setjmp和longjmp函数,再信号处理函数中返回时会导致屏蔽正在被处理的信号。
当捕捉到一个信号后,进入信号捕捉函数,此时当前信号被自动加到进程的信号屏蔽字中,这阻止了后来产生的这种信号中断信号处理程序。如果使用longjmp跳出信号处理函数,信号屏蔽字不会被保存和恢复。

sigsuspend

在一个原子操作中先恢复屏蔽字,然后使进程休眠。

abort

使程序异常终止。将SIGABRT信号发送给调用进程(进程不应忽略此信号)。用于在进程终止前由其执行所需的清理操作。

作业控制信号

 

标签:函数,阻塞,屏蔽,信号,Linux,进程,sa
From: https://www.cnblogs.com/zhh567/p/16619390.html

相关文章

  • Linux-->常用指令
    文件目录指令Linux的选项可以组合使用比如说ls-al这种pwd指令作用:查看当前所在目录的绝对路径语法:pwdls指令作用:显示当前目录下所有文件语法:ls选项......
  • 复习:linux基础 软链接和硬链接
    软链接=windows下的快捷方式特点:可以对不存在的文件创建软链接可以对文件或者目录来创建软链接删除了软链接不会影响他的指向文件删除了指向文件,该软链接会变成死链......
  • 复习:linux vim编辑器
    Vimi键插入esc退出u撤销x删除c选择文本y复制yy复制当前行dd删除光标所在行p 粘贴:w......
  • linux-启停jar脚本
    #!/bin/bashJAVA_OPTIONS="-Xmx1024m-Xms126m-Duser.timezone=GMT+08"JARPATH=`pwd`declare-aJARNAMEfunctionfindJAR(){JARNAME=($(ls-l$JARPATH|gre......
  • Linux驱动开发1_虚拟字符设备
    字符设备开发步骤一、驱动模块的加载与卸载二、字符设备注册与注销三、实现设备的具体操作函数四、添加LICENSE和作者信息 Linux设备号一、设备号的组成二、设备......
  • linux开机启动执行脚本或命令
    添加到  /etc/rc.d/rc.local  给文件执行权限 /etc/rc.d/rc.local用于用户自定义开机启动程序,可以往里写开机要执行的命令或脚本,线上的配置如下:[root@loca......
  • Linux子系统之【进程调度】
    之前已知Linux对进程的管理现在看看Linux如何调度进程1.什么是进程调度?对于CPU来说,进程调度指的就是对CPU进行时间资源的分割管理。2.Linux中进程调度还是在调度进程吗......
  • Linux环境airflow安装部署
    pipinstallmysqlclient 环境:ubuntu,mysql5.7.37,python3.9.12,pip21.2.41.卸载原有airflow,并卸载;pipuninstallapache-airflow查找airflow相关文件......
  • Linux--常用命令
    基本命令ipaddr--------查看ip地址pwd----------显示当前全路径top----------查看进程的cpu、内存占用情况Ctrl+C-----------强制停止ps-ef|grep-i[进程名字]......
  • linux 解决vim无法正常打开文件
    如果在使用vim打开某个文件时出现以下内容,是因为上次打开文件后未正常关闭,留下了一个文件名加.swp后缀的文件(隐藏文件),删除这个.swp文件便能正常打开文件了E325:ATTENTION......