当前位置: 首页 > ai >正文

C 语言进程通信之信号API

1. kill

#include <sys/types.h>
#include <signal.h>int kill(pid_t pid, int sig);
  • pid是接收信号的进程PID,称为目标进程。
  • sig是信号的编号。
示例1 
#include <signal.h>
#include <stdlib.h>int main(int argc, char const *argv[])
{// atoi 将字符串转化为int  argv[1]运行时需传参int id = atoi(argv[1]);// kill(id,9);kill(id,SIGKILL);return 0;
}

2. signal

#include <signal.h>sighandler_t signal(int signum, sighandler_t handler)
  • signum  信号
  • handler 

                        signal(sig, SIG_IGN);        忽略接收的信号

                        signal(sig, SIG_DFL);        执行缺省动作

                        void (*func)(int)                  捕获信号执行func函数

#include <stdio.h>
#include <signal.h>
#include <unistd.h>void handler(int arg)
{printf("收到信号:%d\n",arg);
}int main(int argc, char const *argv[])
{printf("[%d]process\n",getpid());// 忽略信号// signal(SIGUSR1,SIG_IGN);// signal(SIGUSR2,SIG_IGN);// 默认动作(和不写作用一样)// signal(SIGUSR1,SIG_DFL);// signal(SIGUSR2,SIG_DFL);// 自定义信号动作signal(SIGUSR1,handler);signal(SIGUSR2,handler);signal(SIGKILL,handler);signal(SIGSTOP,handler);signal(SIGINT,handler);while (1);return 0;
}

运行:

        kill -SIGUSR1 XXXX

注意:

        SIGKILL, SIGSTOP不能被捕捉和忽略,只能执行缺省动作

3. raise

#include <signal.h>
int raise(int sig);

自己给自己发送信号

参数:
sig: 发送的信号。
返回值:
成功:0
失败:非0

#include <stdio.h>
#include <signal.h>
#include <unistd.h>void handler(int arg)
{static int time = 0;printf("我在打游戏\n");sleep(1);time++;if (time%10 == 0){printf("放下游戏出来搞学习\n");}
}int main(int argc, char const *argv[])
{signal(SIGUSR1, handler);while (1){raise(SIGUSR1);}return 0;
}

4. pause

#include <unistd.h>
int pause(void);

挂起当前进程,可以充当while(1);

http://www.xdnf.cn/news/19373.html

相关文章:

  • python---封装
  • MySQL 8 的 SQL 语法新特性
  • 《哲思:生命与宇宙的终极意义》
  • 【Canvas技法】绘制横向多色旗和竖向多色旗
  • Python入门教程:常用第三方库Matplotlib(基本用法)下载、安装、参数解析教程
  • ibping基本使用 以及 包丢失 超时 排障
  • 设计模式 | 常见的设计模式(单例、工厂、代理、适配器、责任链等等)
  • 2025年9月计算机二级C++语言程序设计——选择题打卡Day12
  • Langflow 多模态技术深度分析
  • Hysplit大气传输和污染扩散-轨迹聚合标准20%30%用途
  • OpenCV 图像直方图与对比度增强实战:从分析到优化
  • Week 14: 深度学习补遗:迁移学习
  • 《隐性质量:决定软件生命周期的看不见的竞争力》
  • Langflow Agents 技术深度分析
  • 极客学院-从零开始学架构
  • MCP SDK 示例一
  • Linux 特殊文件系统
  • 二、程序设计语言基础知识
  • 预售破 500 万!淮北吾悦广场京东奥莱8月29日开业燃动皖北
  • Pytest+Selenium4 Web自动化测试框架(三日速通)
  • ANR InputDispatching TimeOut超时判断 - android-15.0.0_r23
  • python如何打开显示svg图片
  • react-beautiful-dnd ​React 拖拽(Drag and Drop)库
  • Scikit-learn Python机器学习 - 类别特征提取- OneHotEncoder
  • 人工智能-python-深度学习-
  • RPC个人笔记(包含动态代理)
  • HarmonyOS 应用开发:基于API 12+的现代化开发实践
  • shell编程基础入门-2
  • 层次分析法
  • 现代C++特性 并发编程:线程管理库 <thread>(C++11)