专栏中心

EEPW首页 > 专栏 > Timer Signal Action Handler is not Interrupt!

Timer Signal Action Handler is not Interrupt!

发布人:0750long 时间:2010-02-06 来源:工程师 发布文章
Timer Signal Action Handler is not Interrupt!

 

 

下面这段程序是Timer定时2秒发送向本进程发送信号,进程收到信号后执行对应的信号处理函数:
act.sa_handler = prompt_info;
 
#include <sys/time.h>
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <string.h>
 
#define PROMPT "Time Passed 2 Seconds"
 
char *prompt = PROMPT;
 
void prompt_info(int signo)
{
printf("%s\r\n", prompt);
}
 
void init_sigaction(void)
{
struct sigaction act;
 
act.sa_handler = prompt_info;
act.sa_flags = 0;
sigemptyset(&act.sa_mask);
sigaction(SIGPROF, &act, NULL);
}
 
void init_time(void)
{
struct itimerval value;
 
value.it_value.tv_sec = 2;
value.it_value.tv_usec = 10000;
value.it_interval = value.it_value;
setitimer(ITIMER_PROF, &value, NULL);
}
 
int main(void)
{
init_sigaction();
init_time();
while(1)
{
    //sleep(1);
    //getchar();
}
 
return 0;
}
 
/***************************************************/
输出结果:
Time Passed 2 Seconds
Time Passed 2 Seconds
Time Passed 2 Seconds
.........
.........
 
 
如果程序改为
while(1)
{
    sleep(1);
    //getchar();
}
打开while(1)中的任何一句都将导致没有输出,原因是:这两句都将进程挂起,无法响应定时器处理函数。

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

FB-PLC溫度量測及溫度PID控制

FB-PLC LINK功能之應用

资源下载 2007-02-09

博通退出UALink董事会后加入OCP的ESUN计划

智能计算 2025-10-15

OpenAI 与 NVIDIA、AMD 和 Broadcom 一起提升全球计算能力 — 保护 26 GW 的 AI 基础设施

智能计算 2025-10-15

FBe系列PLC使用者手冊(基礎篇)

拆解:华为Pura X

FBe系列PLC使用者手冊(硬體篇)

为什么选择 PCIe 5.0 来满足边缘的功耗、性能和带宽?

EDA/PCB 2025-10-15

博通的Thor Ultra:与英伟达的人工智能网络战争的新战线

FB-PLC內部之記憶體配置及其單點(數位)與暫存器明細

OpenAI与博通合作设计自己的AI芯片

智能计算 2025-10-15

谷歌宣布投资150亿美元在印度人工智能数据中心

通用汽车将遭受 16 亿美元的打击,因为电动汽车的税收优惠被削减和排放规则放宽

了解 CAM归一化过程以及如何避免 CAM hold

从苹果和华为的产品看如何重新划定智能手机行业的界限

更多 培训课堂
更多 焦点
更多 视频

技术专区