linux——信号
2022/2/6 7:34:33
本文主要是介绍linux——信号,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 前言
- 一、思维导图
- 二、例子
- 1.父子进程用信号通信kill()
- 2.父子进程用信号通信sinal()
前言
本文记录的是linux的信号
一、思维导图
二、例子
1.父子进程用信号通信kill()
代码如下(示例):
signal.c
#include <stdio.h> #include <sys/types.h> #include <signal.h> #include <unistd.h> #include <sys/wait.h> //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:%d\n", getpid()); sleep(5); printf("父进程:准备动手!\n"); sleep(1); kill(pid, 9); printf("父进程:已经做掉!\n"); wait(&status); } else if(0 == pid) { //子进程 printf("我是子进程,ID:%d\n", getpid()); while(1) { printf("我是子进程,打我啊笨蛋!i = %d\n", i++); sleep(1); } } return 0; }
结果如图所示:
2.父子进程用信号通信sinal()
代码如下(示例):
#include <stdio.h> #include <sys/types.h> #include <signal.h> #include <unistd.h> #include <sys/wait.h> #include <signal.h> //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:%d\n", getpid()); sleep(5); printf("父进程:准备动手!\n"); sleep(1); kill(pid, 3); printf("父进程:已经做掉!\n"); wait(&status); } else if(0 == pid) { //子进程 printf("我是子进程,ID:%d\n", getpid()); signal(3, func); while(1) { printf("我是子进程,打我啊笨蛋!i = %d\n", i++); sleep(1); } } return 0; }
结果如图所示:
这篇关于linux——信号的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法