文章目录

  • 一、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系统编程学习之十六用程序发送信号相关推荐

  1. 嵌入式Linux系统编程学习之十二守护进程

    文章目录 前言 一.守护进程的特性 二.daemon 进程的编程规则 1.创建子进程,父进程退出 2.在子进程中创建新会话 前言   daemon 运行在后台,也称作"后台服务进程" ...

  2. 嵌入式Linux系统编程学习之十八进程间通信(IPC)简介

      Linux 下的进程通信手段基本上是从 UNIX 平台上的进程通信手段继承而来的.而对 UNIX 发展做出过重大贡献的两大主力 -- AT&T 的贝尔实验室和 BSD (加州大学伯克利分校 ...

  3. 嵌入式Linux系统编程学习之三十四 Socket 编程

    文章目录 一.使用 TCP 的流程图 1.1 头文件包含 1.2 socket 函数 1.3 bind 函数 1.4 listen 函数 1.5 accept 函数 1.6 recv 函数 1.7 s ...

  4. 嵌入式Linux系统编程学习之三十线程的同步

    文章目录 一.条件变量 1.创建和注销 2.等待和激发 3.其他 二.信号灯 1.创建和注销 2.点灯和灭灯 3.获取灯值 4.其他 一.条件变量   条件变量是利用线程间共享的全局变量进行同步的一种 ...

  5. 嵌入式Linux系统编程学习之十五sigaction信号处理机制

    文章目录 一.信号处理情况分析 二.sigaction 信号处理注册 三.sigprocmask 信号阻塞 一.信号处理情况分析   在 signal 处理机制下,还有许多特殊情况需要考虑: 注册一个 ...

  6. 嵌入式Linux系统编程学习之十四signal信号处理机制

      可以用函数 signal 注册一个信号处理函数,原型为: #include <signal.h>typedef void(*sighandler_t)(int); //函数指针 voi ...

  7. 嵌入式Linux系统编程学习之十九标准管道流

      像文件操作有标准 IO 流一样,管道也支持文件流模式.用来创建连接到另一进程的管道 popen 和 pclose .   函数原型: #include <stdio.h>FILE * ...

  8. 嵌入式Linux系统编程学习之二常用命令

    嵌入式Linux系统编程学习之二常用命令 文章目录 嵌入式Linux系统编程学习之二常用命令 前言 一.常用命令 1.su(用户切换) 2.useradd(添加用户) 3.passwd(修改密码) 4 ...

  9. 嵌入式Linux系统编程学习之一目录结构

    嵌入式Linux系统编程学习之一目录结构 文章目录 嵌入式Linux系统编程学习之一目录结构 前言 一.Linux目录结构 前言 Linux目录结构 一.Linux目录结构 /bin:存放Linux的 ...

最新文章

  1. java重命名sheet失败_java jxl excel 数据导出 重新命名无效的工作表名称 | 学步园...
  2. UVA 11021 - Tribles(概率递推)
  3. eclipse 中设置注释模板
  4. 通过一个小Trick实现shader的像素识别/统计操作
  5. STM32——库函数版——矩阵按键程序
  6. Day 1:矩阵归零消除序列和
  7. JS中文乱码解决方案
  8. iOS 内购最新讲解
  9. hive3.0使用问题小记
  10. 第6章第27节:画面太空怎么办:使用小元素填充空旷的版面 [PowerPoint精美幻灯片实战教程]
  11. 请用文言文写一篇500字的古文
  12. Java项目:高校运动会管理系统(java+SSM+JSP+JS+jQuery+Mysql)
  13. sdif matlab,sdif.dat是什么文件
  14. NIST Big Data Interoperability
  15. 迪米特法则 (Law of Demeter, LoD)
  16. 图片文字怎么转换成文本?可以试试这三种途径
  17. JAVA-List排序-Collections.sort()-对象数组(集合)根据某一属性排序
  18. 树莓派FM广播点歌系统
  19. GIS篇—搭建本地地图服务器(geoserver )和 leaflet 绘制多边形,点击事件等
  20. echarts饼图封装

热门文章

  1. python日期,从int格式为时间格式
  2. django得到Model的全部字段名(field)
  3. python使用ray框架改进原有代码,实现多进程与分布式
  4. Tensorflow federal learning 安装
  5. 搭建远程jupyter服务器并从本地连接,有浏览器的地方就有Python!
  6. python all和any用法_python any()和all()用法
  7. php yii2 路径问题,yii2常用路径获取
  8. python全栈索引
  9. 【从0到1,搭建Spring Boot+RESTful API+Shiro+Mybatis+SQLServer权限系统】04、统一处理异常...
  10. Python入门之软件开发目录规范