实验七 信号

项目 内容
这个作业属于哪个课程 [2020春季Linux系统与应用]
这个作业的要求在哪里 实验七作业要求
学号-姓名 17043210-邓斌
作业学习目标 1.了解信号的概念 2.掌握信号处理的方法

  1. 编写一个简单的程序并运行,然后向该进程发送不同的信号以观察该进程对接收到信号的反应。

(1) 在当前终端通过按键组合向该进程发送信号 CTRL+C 、 CTRL+Z 、 CTRL+\ ,在每一次运行该程序的时候分别通过按键发送不同的信号来观察进程的反应。这里三个按键组合说明要 发送三个信号,所以要运行该程序三次,然后每次使用不同的按键组合来观察。

CTRL+C :

CTRL+Z :

CTRL+\ :

(2) 另外再开启一个终端,在终端通过输入 kill 命令来给进程发送信号,进程的 pid 在程序运行的第一 行输出,每次运行程序的时候 pid 是不同的。

(3) 我们编写一个简单的程序,该程序调用 kill() 函数向某个进程发送信号

  1. 使用signal()函数来捕捉信号。

  1. 通过举例说明alarm()函数和setitimer()函数的使用。

    (1)alarm()函数计时结束进程

(2)设定定时炸弹

(3)setitimer()函数实现alarm()函数

(4)setitimer()函数与alarm()函数的区别

用alarm() 定时,在到达设定的时间后,内核 会发送sigalrm信号给进程,进程忽略该信号而停止。

用setitimer() 定时,它支持三种类型的定时器,分别是 ITIMER_REAL 、ITIMER_VIRTUAL、ITIMER_PROF,setitimer()会使用it_value所指定的到期时间来启动定时器。一旦it_value所指定的时间过去后,内核会使用it_interval所提供的时间重新启动该定时器。因此,it_value是当前定时器剩下的时间。一旦it_value的值为0时,它会被设定为it_interval。如果定时器到期,而且it_interval的值为0,则不会重新启动该定时器。同样地,如果一个活动中的定时器的it_value被设为0,则定时器会停止运行,而且不会被重新启动。

  1. 举例说明信号集操作函数的使用。

  1. 举例说明对阻塞信号与未决信号的理解。

  1. 举例说明sigaction()函数的使用。

posted @ 2020-05-22 07:35  安然23  阅读(134)  评论(0)    收藏  举报