嵌入式Linux系统编程学习之十六用程序发送信号
文章目录
- 一、kill 和 raise 信号发送函数
- 二、sigqueue 信号发送函数
一、kill 和 raise 信号发送函数
kill 和 raise 信号的发送函数的原型分别为:
#include <sys/types.h>#include <signal.h>int kill(pid_t pid, int sig);#include <signal.h>int raise(int sig);
kill 函数向指定进程发送指定信号;
raise 函数则允许进程向自身发送信号。
参数 pid 为将要接收信号的进程的 pid,可以通过 getpid() 函数获得;
参数 sig 为要发送的信号,如果成功,返回 0,否则为 -1。
二、sigqueue 信号发送函数
sigqueue 也可以发送信号,并且能传递附加的信息,其原型为:
#include <signal.h>int sigqueue(pid_t pid, int sig, const union sigval value);
参数 pid 为接收信号的进程;
参数 sig 为要发送的信号;
参数 value 为一整型与指针类型的共用体:
union sigval{ //同一时间只能传递一个,因为是共用体int sival_int; //可以传递整型void* sival_ptr; //其他类型};
由 sigqueue 函数发送的信号的第 3 个参数 sival_ptr 的值,可以被进程的信号处理函数的第 2 个参数 info->si_ptr 接收到,整型的 sival_int 可以被信号处理函数的第 2 个参数 info->si_int 接收到。
注意:一个进程向另外一个进程发送信号时,发送进程不要将自己进程空间的地址发送给接收进程,因为接收进程接收到地址也访问不到发送进程的地址空间。要用 ps -aux 查看接收端的进程号,然后发送端向该进程号发送数据。(注意:经过验证,发现在不同的进程之间利用 sigqueue 传递数据时,只能传递整型值,传递字符串失败)
嵌入式Linux系统编程学习之十六用程序发送信号相关推荐
- 嵌入式Linux系统编程学习之十二守护进程
文章目录 前言 一.守护进程的特性 二.daemon 进程的编程规则 1.创建子进程,父进程退出 2.在子进程中创建新会话 前言 daemon 运行在后台,也称作"后台服务进程" ...
- 嵌入式Linux系统编程学习之十八进程间通信(IPC)简介
Linux 下的进程通信手段基本上是从 UNIX 平台上的进程通信手段继承而来的.而对 UNIX 发展做出过重大贡献的两大主力 -- AT&T 的贝尔实验室和 BSD (加州大学伯克利分校 ...
- 嵌入式Linux系统编程学习之三十四 Socket 编程
文章目录 一.使用 TCP 的流程图 1.1 头文件包含 1.2 socket 函数 1.3 bind 函数 1.4 listen 函数 1.5 accept 函数 1.6 recv 函数 1.7 s ...
- 嵌入式Linux系统编程学习之三十线程的同步
文章目录 一.条件变量 1.创建和注销 2.等待和激发 3.其他 二.信号灯 1.创建和注销 2.点灯和灭灯 3.获取灯值 4.其他 一.条件变量 条件变量是利用线程间共享的全局变量进行同步的一种 ...
- 嵌入式Linux系统编程学习之十五sigaction信号处理机制
文章目录 一.信号处理情况分析 二.sigaction 信号处理注册 三.sigprocmask 信号阻塞 一.信号处理情况分析 在 signal 处理机制下,还有许多特殊情况需要考虑: 注册一个 ...
- 嵌入式Linux系统编程学习之十四signal信号处理机制
可以用函数 signal 注册一个信号处理函数,原型为: #include <signal.h>typedef void(*sighandler_t)(int); //函数指针 voi ...
- 嵌入式Linux系统编程学习之十九标准管道流
像文件操作有标准 IO 流一样,管道也支持文件流模式.用来创建连接到另一进程的管道 popen 和 pclose . 函数原型: #include <stdio.h>FILE * ...
- 嵌入式Linux系统编程学习之二常用命令
嵌入式Linux系统编程学习之二常用命令 文章目录 嵌入式Linux系统编程学习之二常用命令 前言 一.常用命令 1.su(用户切换) 2.useradd(添加用户) 3.passwd(修改密码) 4 ...
- 嵌入式Linux系统编程学习之一目录结构
嵌入式Linux系统编程学习之一目录结构 文章目录 嵌入式Linux系统编程学习之一目录结构 前言 一.Linux目录结构 前言 Linux目录结构 一.Linux目录结构 /bin:存放Linux的 ...
最新文章
- java重命名sheet失败_java jxl excel 数据导出 重新命名无效的工作表名称 | 学步园...
- UVA 11021 - Tribles(概率递推)
- eclipse 中设置注释模板
- 通过一个小Trick实现shader的像素识别/统计操作
- STM32——库函数版——矩阵按键程序
- Day 1:矩阵归零消除序列和
- JS中文乱码解决方案
- iOS 内购最新讲解
- hive3.0使用问题小记
- 第6章第27节:画面太空怎么办:使用小元素填充空旷的版面 [PowerPoint精美幻灯片实战教程]
- 请用文言文写一篇500字的古文
- Java项目:高校运动会管理系统(java+SSM+JSP+JS+jQuery+Mysql)
- sdif matlab,sdif.dat是什么文件
- NIST Big Data Interoperability
- 迪米特法则 (Law of Demeter, LoD)
- 图片文字怎么转换成文本?可以试试这三种途径
- JAVA-List排序-Collections.sort()-对象数组(集合)根据某一属性排序
- 树莓派FM广播点歌系统
- GIS篇—搭建本地地图服务器(geoserver )和 leaflet 绘制多边形,点击事件等
- echarts饼图封装
热门文章
- python日期,从int格式为时间格式
- django得到Model的全部字段名(field)
- python使用ray框架改进原有代码,实现多进程与分布式
- Tensorflow federal learning 安装
- 搭建远程jupyter服务器并从本地连接,有浏览器的地方就有Python!
- python all和any用法_python any()和all()用法
- php yii2 路径问题,yii2常用路径获取
- python全栈索引
- 【从0到1,搭建Spring Boot+RESTful API+Shiro+Mybatis+SQLServer权限系统】04、统一处理异常...
- Python入门之软件开发目录规范