飞凌嵌入式ElfBoard-进程间的通信之信号处理pause

pause()可以让进程暂停运行,当进程被挂起时,它不会占用 CPU 资源,直到某个信号(如 SIGINT 或 SIGTERM)被发送给该进程。

1.头文件

#include <unistd.h>

2.函数原型

int pause(void);

3.参数

无。

4.返回值

pause() 在成功时不会返回。进程接收到信号并恢复执行,pause() 将返回 -1,并设置 errno为 EINTR。这通常表示进程被信号中断,不意味着出错。

5.示例:通过pause()函数暂停进程

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h> void handle_signal(int sig) { printf("Received signal: %d\n", sig); } int main() { // 注册 SIGINT 信号的处理程序 signal(SIGINT, handle_signal); // 捕捉 Ctrl+C (SIGINT) 信号 printf("Process is paused. Press Ctrl+C to continue...\n"); // 调用 pause(),进程将被挂起,等待信号 pause(); // 阻塞,等待信号 // 程序恢复后,继续执行 printf("Process resumed after receiving signal.\n"); return 0; } |

6.运行结果

|--------------------------------------------------------------------------------------------------------------|
| Process is paused. Press Ctrl+C to continue... ^CReceived signal: 2 Process resumed after receiving signal. |

7.代码解析

注册signal函数用户捕获SIGINT信号,然后调用pause()函数使进程进入休眠状态,在此期间,程序不会继续执行 pause() 后的代码,也不会占用 CPU 资源,直到接收到SIGINT 信号,pause() 被中断(因为接收到信号),程序将恢复执行,执行 handle_signal() 函数,输出恢复的消息。

相关推荐
流浪0012 天前
Linux系统篇34——信号(六):信号处理期间又来了怎么办?——sigaction、sa_mask、可重入函数与 volatile
linux·运维·面试·操作系统·信号处理·信号
科恒盛远3 天前
ZU902 FMC194 可编程宽带信号源实测
fpga开发·硬件工程·信号处理
联丰迅声3 天前
参数表上三个“dB”,选声学成像仪到底该盯哪个?
信号处理·传感器·工业自动化·mems·声学成像
expipi刘家伟3 天前
RFSOC 信号采集处理模块
信号处理·rfsoc·阵列信号采样
Lsir10110_4 天前
从按钮“点不动“讲起——深入理解 Qt 信号槽机制
开发语言·qt·信号处理
菜鸟~noob2335 天前
【电子战】 第09篇:阵列信号处理——波束形成、MVDR、MUSIC【含matlab代码】
开发语言·matlab·信号处理
2501_929807255 天前
专业140+总分430+武汉理工大学855信号与系统考研武理工,电子信息和通信工程,真题大纲,参考书
考研·信息与通信·信号处理·通信·电子信息
学习FPGA的电气小兴兴7 天前
基于FPGA的CORDIC旋转模式实现sin和cos运算
fpga开发·信号处理·数字信号处理·verilog·fpga·verilog hdl·cordic
复方金银花颗粒8 天前
reactor和proactor的好处和坏处。为什么要用reactor而不用 proactor?
后端·信号处理
粉色挖掘机8 天前
关于z平面的一些理解与总结
信号处理·z变换·滤波器