首页 > 其他分享 >学习笔记9 第六章的自学归纳

学习笔记9 第六章的自学归纳

时间:2023-11-12 11:44:06浏览次数:36  
标签:函数 信号处理 pid 笔记 进程 信号 第六章 自学 define

第六章 信号和信号处理

信号和中断

  • 信号:发送给进程的请求,将进程从正常执行转移到中断处理

  • 中断:从I/O设备或协处理器发送到CPU的外部请求,它将CPU从正常执行转移到中断处理

Unix/Linux信号示例

  • Ctrl+C:当前运行的进程终止。生成一个键盘硬件中断。键盘中断处理程序将"Ctrl+C"组合键转换为SIDINT(2)信号,发送给终端上的所有进程,并唤醒等待键盘输入的进程。

  • nohup a.out&:在后台运行一个程序,即使用户推出后,进程仍然继续执行。

  • kill pid (or kill -s 9 pid):用户再次登录时也许会发现(通过ps-u LTD)后台进程仍在运行。用户可以使用sh命令kill pid (or kill -s 9 pid)杀死该进程。

Unix/Linux中的信号处理

信号类型

#define	SIGHUP	1
#define	SIGINT	2
#define	SIGQUIT	3
#define	SIGILL	4
#define	SIGTRAP	5
#define	SIGABRT	6
#define	SIGIOT	6
#define	SIGBUS	7
#define	SIGFPE	8
#define	SIGKILL	9
#define	SIGUSR1	10
#define	SIGSEGV	11
#define	SIGUSR2	12
#define	SIGPIPE	13
#define	SIGALRM	14
#define	SIGTERM	15
#define	SIGSTKFLT 16
#define	SIGCHLD	17

#define	SIGCONT	18
#define	SIGSTOP	19
#define	SIGTSTP	20
#dpfine	STGTTTN	21
#define	SIGTTOU	22
#define	SIGURG	23
#define	SIGXCPU	24
#define	SIGXFSZ	25
#define	SIGVTALRM 26
#define	SIGPROF	27
#define	SIGWINCH 28
#define	SIGPOLL	29
#define	SIGPWR	30
#define	SIGSYS	31

信号的来源

  • 来自硬件中断的信号:在执行过程中,一些硬件中断被转换为信号发送给进程硬件信号示例。

  • 来自异常的信号:常见的陷阱信号有SIGFPE(8),表示浮点异常(除以0),最常见也是最可怕的时SIGSEGV(11),表示段错误。

  • 来自其他进程的信号:进程可以使用kill(pid,sig)系统调用向pid标识的目标进程发送信号。


信号处理函数

1.信号处理函数的注册:在编写程序时,可以使用操作系统提供的函数来注册信号处理函数。通常使用 signal 或 sigaction 等函数来注册信号处理函数。这允许您定义在接收特定信号时要执行的自定义处理逻辑。

2.内置信号:操作系统定义了一些标准信号,例如 SIGINT(通常由 Ctrl+C 生成)、SIGTERM(正常终止请求)和 SIGHUP(终端挂起或控制进程终止)。这些信号有固定的名称和含义。

3.信号处理函数的功能:信号处理函数可以执行各种操作,包括但不限于以下内容:

  • 保存程序状态或数据。
  • 清理资源或关闭文件。
  • 发出自定义日志消息。
  • 终止进程。
  • 重新加载配置文件。
  • 忽略信号。

4.信号处理函数的编写:通常,信号处理函数是用户编写的函数,它们必须符合特定的函数签名,以接受信号作为参数。

5.编写信号处理函数时,需要小心处理,以确保它们不会导致不稳定或不安全的行为。


安装信号捕捉函数

int r=signal(int signal_number,void *handler)
  • 用于注册信号处理函数,以便在程序接收到特定信号时执行特定的操作。

信号处理步骤

1.当某进程处于内核模式时,会检查信号并处理未完成的信号。

2.重置用户安装的信号捕捉函数:用户安装的陷阱相关信号捕捉函数用于处理用户代码中的陷阱错误。

3.信号和唤醒:在Unix/Linux内核中有两种SLEEP进程;深度休眠进程和浅度休眠进程。


信号与异常

1.作为进程异常的统一处理方法:当进程遇到异常时,它会陷入内核模式,将陷阱原因 转换为信号编号,并将信号发送给自己。

2.在特殊情况下,它会让某个进程通过信号杀死另一个进程。


sigaction()的使用操作实践

捕捉操作实践

苏格拉底挑战



标签:函数,信号处理,pid,笔记,进程,信号,第六章,自学,define
From: https://www.cnblogs.com/889w/p/17812254.html

相关文章

  • 第九周学习笔记
    信号和信号处理信号和中断“中断”是从1/0设备或协处理器发送到CPU的外部请求,它将CPU从正常执行转移到中断处理。与发送给CPU的中断请求一样,“信号”是发送给进程的请求,将进程从正常执行转移到中断处理。在讨论信号和信号处理之前,我们先来回顾中断的概念和机制,这有助于正确看待......
  • CSS3学习笔记-动画
    CSS3中提供了许多有趣和实用的动画效果,可以使页面更加生动有趣,下面介绍一些常用的动画效果。@keyframes规则使用@keyframes规则可以创建一系列动画帧,并定义它们的状态和样式,在页面中应用该动画后,浏览器会自动处理中间帧的变化。语法如下:@keyframesanimation-name{from......
  • CSS3学习笔记-过渡
    学习CSS3过渡(Transitions)是为了在元素状态之间创建平滑的动画效果。下面是一些关于CSS3过渡的学习笔记:过渡基础语法:使用transition属性来定义过渡效果。通过指定过渡的属性、持续时间、延迟和过渡速度来设置过渡。可以使用逗号分隔多个属性,为每个属性设置不同的过渡效果。过......
  • CSS3学习笔记-句子排版效果
    CSS3提供了丰富的排版效果,可以通过样式属性来控制文本的排列方式、字体样式、行高、字间距等。以下是一些常用的句子排版效果示例:文本对齐方式:.text-center{text-align:center;}.text-right{text-align:right;}.text-justify{text-align:justify;}字......
  • CSS3学习笔记引言
    开始我们要来介绍css:CSS(全称为CascadingStyleSheets)是一种用于描述HTML、XML等文档样式的样式语言,它能够定义元素的显示方式,如字体、颜色、布局等。CSS可以把HTML文档的呈现样式和内容分离,使得网页的结构和表现更加清晰明了,并且可以减少重复的代码。有了CSS,我们可以轻松地......
  • CSS3学习笔记-选择器
    在CSS中,选择器是一种指定一个或多个元素的方法。可以根据元素的类型、类、ID、属性等特征来选择元素。CSS3引入了很多新的选择器,让我们可以更加灵活和精准地选择元素。下面介绍一些常用的CSS3选择器:1.元素选择器元素选择器指定元素的标签名称,例如p、h1、ul。p{color:......
  • CSS3学习笔记-字体属性
    在CSS3中,可以使用字体属性来控制网页中文本的样式和排版。以下是常用的字体属性:font-family该属性用于指定网页中的文本所使用的字体。我们可以通过使用通用的字体名称,或者直接使用字体名称,在多个字体之间进行设置。例如:```cssbody{font-family:Arial,Helvetica,sans-......
  • CSS3学习笔记-盒模型
    CSS盒模型是指包含内容(content)、填充(padding)、边框(border)和外边距(margin)几个方面的一个矩形框模型。内容区(content):指元素中显示内容的区域,它的大小由width和height属性决定。填充区(padding):用于控制内容区周围的空白区域或边距,padding属性可以控制填充区的大小。边框(border):位于......
  • CSS3学习笔记-文字特效
    CSS3中提供了许多有趣和实用的文字特效,可以让我们的文本内容更加生动有趣,下面介绍一些常用的文字特效。文本阴影使用text-shadow属性可以为文本添加阴影效果,语法如下:text-shadow:h-shadowv-shadowblur-color;其中,h-shadow和v-shadow是必需的参数,分别表示阴影的水平和垂......
  • 读程序员的制胜技笔记10_可口的扩展
    1. 可扩展性1.1. 土耳其的一句谚语:“路到眼前必有车”1.1.1. “别为还没到来的事情烦恼”1.2. 单纯的高性能并不能使一个系统具有可扩展性,你需要让所有方面的设计都得能够迎合越来越多的用户1.3. 没有一个单一的方案可以解决我们所有的问题,我们需要把所有用来解决问题的......