首页IT科技嵌入式linux应用程序例程(嵌入式 Linux进程间的通信–信号)

嵌入式linux应用程序例程(嵌入式 Linux进程间的通信–信号)

时间2025-07-30 06:12:49分类IT科技浏览3987
导读:目录...

目录

信号 

   信号的概述

信号类型

信号发送 

1            、kill 函数

2                   、raise函数

3      、pause函数 

信号处理 

可以结合上一篇文章一起看:

嵌入式 Linux进程之间的通信_丘比特惩罚陆的博客-CSDN博客

信号 

   信号的概述

   软中断信号(signal             ,又简称为信号)用来通知进程发生了异步事件             。简单来说                  ,信号就是 给进程发送命令                  。比如结束命令 CTRL+C       ,让进程无条件结束运行      。我们也可以通过给进程发送 命令          ,让它执行相应的操作                   ,通过 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.h> void my_func(int sign_no) { if(sign_no==SIGINT) printf("I have get SIGINT\n"); else if(sign_no==SIGQUIT) 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); }

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
驱动程序 开发(Cursor:GPT-4 驱动的强大代码编辑器) spring cloud alibaba从入门到进阶(Spring Cloud Alibaba全家桶(一)——Spring Cloud Alibaba介绍)