linux 进程间通信系列1,使用signal,kill

信号基本概念:  软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件。注意,信号只是用来通知某进程发生了什么事件,并不给该进程传递任何数据。

kill函数的详细说明:kill

信号接收端:

#include <stdio.h>
#include <signal.h>
#include <unistd.h>//write function int flag = 0; void sigusr1_handler(int sig){
printf("sig : %d\n", sig); write(1, "signal called\n",14);
flag = 1;
} int main(){
printf("pid=%d\n", getpid());
signal(SIGUSR1, sigusr1_handler);
while(1){
printf("waiting for signal\n");
sleep(5);
if(flag != 0){
printf("break loop\n");
break;
}
}
return 0;
}

github源代码

信号发送端:

#include <stdio.h>
#include <signal.h>
#include <stdlib.h> int main(int argc, char* argv[]){
int retval;
pid_t pid = atoi(argv[1]); retval = kill(pid,SIGUSR1); if ( retval )
{
perror( "kill" );
}
else
{
printf( "%d killed\n", pid );
}
}

github源代码

在命令行里使用kill命令给信号接收端,发送信号也可以。

kill -s SIGUSR1 程序的PID

c/c++ 学习互助QQ群:877684253

本人微信:xiaoshitou5854

最新文章

  1. try catch里面try catch嵌套
  2. Nancy之区域和分部视图的使用
  3. 彻底弄懂响应式设计中的em和rem
  4. C语言中的字符串
  5. C# StopWatch的使用
  6. java基础接口练习
  7. Django对静态文件的处理——部署阶段
  8. 前端面试题(html篇)
  9. python3图片裁剪+转换pdf+压缩
  10. HDU_2014 青年歌手大奖赛_评委会打分
  11. layout_gravity与gravity的区别
  12. 线程问题、异常处理、自定义URL
  13. Python对于CSV文件的读取与写入
  14. bzoj千题计划252:bzoj1095: [ZJOI2007]Hide 捉迷藏
  15. C语言与java语言中数据类型的差别总结
  16. mysql开发规范(优化)
  17. 《CSS世界》读书笔记(十六)
  18. Python 2.7 cython cythonize py 编译成 pyd 谈谈那些坑
  19. MachineLearning Exercise 4 :Neural Networks Learning
  20. oozie调度sqoop脚本时操作符号替换

热门文章

  1. Python档案袋(列表、元组、字典、集合 )
  2. 参数验证 @Validated 和 @Valid 的区别
  3. Java第二次上机随笔
  4. Mysql的两种偏移量分页写法
  5. 关于mybatis中typeHandler的两个案例
  6. Spring Boot2.0 设置拦截器
  7. Chapter 4 Invitations——22
  8. MySQL 索引及查询优化总结
  9. 流式大数据计算实践(5)----HBase使用&amp;SpringBoot集成
  10. ssh转发代理:ssh-agent用法详解