c/c++ linux 进程间通信系列1,使用signal,kill
程序员文章站
2022-06-22 11:18:18
linux 进程间通信系列1,使用signal,kill 信号基本概念: 软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。进程之间可以互相通过系统调用kill发送软中断信号。内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件。注意,信号只是用来通知某进程发生了什么事件 ......
linux 进程间通信系列1,使用signal,kill
信号基本概念: 软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。进程之间可以互相通过系统调用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
上一篇: 蒲公英是会转世复仇的
下一篇: 具有年味的美食
推荐阅读
-
c/c++ linux 进程间通信系列3,使用socketpair,pipe
-
c/c++ linux 进程间通信系列4,使用共享内存
-
c/c++ linux 进程间通信系列6,使用消息队列(message queue)
-
c/c++ linux 进程间通信系列5,使用信号量
-
c/c++ linux 进程间通信系列7,使用pthread mutex
-
c/c++ linux 进程间通信系列2,使用UNIX_SOCKET
-
c/c++ linux 进程间通信系列1,使用signal,kill
-
c/c++ linux 进程间通信系列7,使用pthread mutex
-
c/c++ linux 进程间通信系列3,使用socketpair,pipe
-
c/c++ linux 进程间通信系列4,使用共享内存