前言一、思维导图二、例子
1.父子进程用信号通信kill()2.父子进程用信号通信sinal()
前言
本文记录的是linux的信号
一、思维导图 二、例子 1.父子进程用信号通信kill()
代码如下(示例):
signal.c
#include#include #include #include #include //int kill(pid_t pid, int sig); int main(int argc, char const *argv[]) { int i = 0, status; pid_t pid = fork(); if(pid > 0) { //父进程 printf("我是父进程,ID:%dn", getpid()); sleep(5); printf("父进程:准备动手!n"); sleep(1); kill(pid, 9); printf("父进程:已经做掉!n"); wait(&status); } else if(0 == pid) { //子进程 printf("我是子进程,ID:%dn", getpid()); while(1) { printf("我是子进程,打我啊笨蛋!i = %dn", i++); sleep(1); } } return 0; }
结果如图所示:
代码如下(示例):
#include#include #include #include #include #include //int kill(pid_t pid, int sig); //void (*signal(int sig, void (*func)(int)) )(int); void func(int arg) { printf("这里是信号响应函数n"); } int main(int argc, char const *argv[]) { int i = 0, status; pid_t pid = fork(); if(pid > 0) { //父进程 printf("我是父进程,ID:%dn", getpid()); sleep(5); printf("父进程:准备动手!n"); sleep(1); kill(pid, 3); printf("父进程:已经做掉!n"); wait(&status); } else if(0 == pid) { //子进程 printf("我是子进程,ID:%dn", getpid()); signal(3, func); while(1) { printf("我是子进程,打我啊笨蛋!i = %dn", i++); sleep(1); } } return 0; }
结果如图所示:



