飞凌嵌入式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() 函数,输出恢复的消息。

相关推荐
aichitang20243 天前
应用数学与音频信号处理
音视频·信号处理
沫璃染墨3 天前
《从零入门Linux系统篇(五十七):线程篇·十——生产者消费者模型进阶:从环形缓冲区到POSIX信号量》
linux·运维·服务器·开发语言·c++·系统架构·信号处理
沫璃染墨4 天前
《Qt从零入门系列(十二):Qt文件操作详解——从QFile读写到QFileInfo与记事本实战》
开发语言·网络·c++·qt·交互·信号处理·文件
国科安芯6 天前
星载通信载荷信号处理中抗辐射微控制器的选型与适应性分析
人工智能·嵌入式硬件·mcu·信号处理·risc-v·抗辐射·空间信息
这张生成的图像能检测吗6 天前
(综述)边缘计算 × IoT:从机器信号处理到低时延故障诊断
边缘计算·信号处理·故障诊断
weixin_419658317 天前
CAPL的数据类型(一)
车载系统·自动驾驶·汽车·信号处理
学习FPGA的电气小兴兴10 天前
基于FPGA的CORDIC旋转模式实现sin和cos运算_采用EGo1板卡上板验证【FPGA数字信号处理第5讲】
fpga开发·信号处理·数字信号处理·verilog·cordic·ego1·fpga设计入门与提高
流浪00122 天前
Linux系统篇34——信号(六):信号处理期间又来了怎么办?——sigaction、sa_mask、可重入函数与 volatile
linux·运维·面试·操作系统·信号处理·信号
科恒盛远23 天前
ZU902 FMC194 可编程宽带信号源实测
fpga开发·硬件工程·信号处理
联丰迅声23 天前
参数表上三个“dB”,选声学成像仪到底该盯哪个?
信号处理·传感器·工业自动化·mems·声学成像