嵌入式 Linux进程间的通信--信号
创始人
2024-05-29 10:27:14
0

目录

信号 

   信号的概述

信号类型

信号发送 

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 
#include 
#include 
#include 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);
}

相关内容

热门资讯

“采药昆仑”石刻的考古学和文本... 转自:光明日报    青海海西州野牛沟岩画中的野牦牛图像。汤惠生摄/光明图片    青海海西州野牛沟...
加强警示教育、筑牢作风防线、破... 新华社记者 在深入贯彻中央八项规定精神学习教育中,重庆、云南、青海、甘肃等地对标对表中央八项规定及其...
省人大常委会开展代表建议重点督... 本报讯 (记者 乔欣) 近日,省人大常委会督办组赴省民政厅对省人大代表马宏提出的《关于培育“医养护结...
青海高院成功调解一起 长达13... 本报讯 (通讯员 李德军 记者 田得乾) “拆掉引发纠纷的旧围墙,解开当事人心里的疙瘩,换来了握手言...
1962年《寂静的春天》一书的... 1962年《寂静的春天》一书的出版,在世界范围内引起人们对野生动物的关注,唤起了人们的环境意识.这本...
大米网校英语怎么样? 大米网校英语怎么样?你好朋友大米网校英语基本上也还是比较不错的,也是需要看每个孩子的用心,只要你用心...
古代公主嫁人前,为何要安排陪嫁... 古代公主嫁人前,为何要安排陪嫁宫女先试婚?这一习惯从什么时候开始的?这个习惯是从明朝开始的,安排宫女...
国际油价3日下跌 转自:财联社【国际油价3日下跌】财联社7月4日电,国际油价3日下跌。截至当天收盘,纽约商品交易所8月...
水星今日迎来年度第二次东大距,... 转自:光明日报据新华社天津7月3日电(记者周润健)7月4日,神秘的水星将迎来东大距,这是今年第二次水...
伊朗多地机场恢复运营 转自:财联社【伊朗多地机场恢复运营】财联社7月4日电,伊朗民航组织当地时间3日晚宣布,伊朗多地机场恢...