曲阜企业网站建设,什么网站做简历比较好,大连市建设工程信息网官网,公司网站的定义目录
信号 信号的概述
信号类型
信号发送
1、kill 函数
2、raise函数
3、pause函数
信号处理
可以结合上一篇文章一起看#xff1a; 嵌入式 Linux进程之间的通信_丘比特惩罚陆的博客-CSDN博客 信号 信号的概述 软中断信号#xff08;signal#xff0c;又简称为…目录
信号 信号的概述
信号类型
信号发送
1、kill 函数
2、raise函数
3、pause函数
信号处理
可以结合上一篇文章一起看 嵌入式 Linux进程之间的通信_丘比特惩罚陆的博客-CSDN博客 信号 信号的概述 软中断信号signal又简称为信号用来通知进程发生了异步事件。简单来说信号就是 给进程发送命令。比如结束命令 CTRLC 让进程无条件结束运行。我们也可以通过给进程发送 命令让它执行相应的操作通过 signal 函数实现。 异步就是不需要特意等待某一信号到来当信号来了时候相当于软中断会通知进程然后 执行相应操作。 注意信号只是用来通知某进程发生了什么事件并不给该进程传递任何数据。 进程对信号的处理 1捕获信号并处理 2忽略信号 SIGKILL SIGSTOP 3接收默认处理 在进程表的表项中有一个软中断信号域该域中每一位对应一个信号当有信号发送给进程时 对应位置位。由此可以看出进程对不同的信号可以同时保留但对于同一个信号进程并不知道 在处理之前来过多少个。
信号类型 信号发送
1、kill 函数 2、raise函数 3、pause函数 信号处理 当系统捕捉到某个信号时可以忽略该信号或者用指定的函数处理或者使用系统默认的方式。 信号处理的方式主要有两种一种是使用简单的 signal 函数另外一种是使用信号集函数组 sigaction。
函数原型sighandler_t signal(int signum, sighandler_t handler);功能信号的处理参数 signum指明要处理的信号它可以取除了 SIGKILL 和 SIGSTOP 外的任何一种信号 handler描述了与信号关联的动作, 取值可以是以下三种 ② 函数地址接收到对应的信号就跳转到指定中断 ② SIG_IGN忽略该信号 ③ SIG_DFL采用系统默认处理 返回值返回先前的信号处理函数指针如果有错误则返回 SIG_ERR(-1)例程
#include signal.h
#include stdio.h
#include stdlib.h
#include unistd.hvoid my_func(int sign_no)
{if(sign_noSIGINT)printf(I have get SIGINT\n);else if(sign_noSIGQUIT)printf(I have get SIGQUIT\n);
}
int main()
{
printf(Waiting for signal SIGINT or SIGQUIT \n );/*注册信号处理函数*/
signal(SIGINT, my_func); /*CTRL -C*/
signal(SIGQUIT, my_func);/*CTRL -\*/
signal(SIGCHLD, SIG_IGN);/*SIGCHLD --子进程结束信号*/
pause(); /*将进程挂起知道有信号才退出*/
exit(0);
}