c/c++ linux 进程间通信系列1,使用signal,kill
2024-09-09 17:57:37
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;
}
信号发送端:
#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 );
}
}
在命令行里使用kill命令给信号接收端,发送信号也可以。
kill -s SIGUSR1 程序的PID
c/c++ 学习互助QQ群:877684253
本人微信:xiaoshitou5854
最新文章
- try catch里面try catch嵌套
- Nancy之区域和分部视图的使用
- 彻底弄懂响应式设计中的em和rem
- C语言中的字符串
- C# StopWatch的使用
- java基础接口练习
- Django对静态文件的处理——部署阶段
- 前端面试题(html篇)
- python3图片裁剪+转换pdf+压缩
- HDU_2014 青年歌手大奖赛_评委会打分
- layout_gravity与gravity的区别
- 线程问题、异常处理、自定义URL
- Python对于CSV文件的读取与写入
- bzoj千题计划252:bzoj1095: [ZJOI2007]Hide 捉迷藏
- C语言与java语言中数据类型的差别总结
- mysql开发规范(优化)
- 《CSS世界》读书笔记(十六)
- Python 2.7 cython cythonize py 编译成 pyd 谈谈那些坑
- MachineLearning Exercise 4 :Neural Networks Learning
- oozie调度sqoop脚本时操作符号替换