西宁网站seo价格,wordpress 登陆 插件下载,wordpress 门户,外贸网站推广技巧以下内容源于朱有鹏嵌入式课程的学习与整理#xff0c;如有侵权请告知删除。
1、alarm函数 函数原型 函数说明 #xff08;1#xff09;内核以API形式提供的闹钟#xff1b; #xff08;2#xff09;可以为当前进程定义闹钟#xff0c;时间到了会发出SIGALRM信号。 如有侵权请告知删除。
1、alarm函数 函数原型 函数说明 1内核以API形式提供的闹钟 2可以为当前进程定义闹钟时间到了会发出SIGALRM信号。 3每个进程只能有一个alarm当重新定义时会重新计时。 4注意函数的返回值见上图文字。 代码示例 ret alarm(5);printf(1st, ret %d.\n, ret);sleep(3);ret alarm(5); // 返回值是2但是本次alarm会重新定5sprintf(2st, ret %d.\n, ret);sleep(1);ret alarm(5); //返回值时4但是本次的alarm会重新定5sprintf(3st, ret %d.\n, ret); 2、pause函数 pause函数的作用是让当前进程暂停运行交出CPU给其他进程去执行 当前进程进入pause状态后当前进程会表现为“卡住、阻塞住” 要退出pause状态当前进程需要被信号唤醒。 3、使用alarm和pause来模拟sleep
#include stdio.h
#include unistd.h // unix standand
#include signal.hvoid func(int sig)
{/*if (sig SIGALRM){printf(alarm happened.\n);}*/
}void mysleep(unsigned int seconds);int main(void)
{printf(before mysleep.\n);mysleep(3);printf(after mysleep.\n);/* unsigned int ret -1;struct sigaction act {0};act.sa_handler func;sigaction(SIGALRM, act, NULL);//signal(SIGALRM, func);ret alarm(5);printf(1st, ret %d.\n, ret);sleep(3);ret alarm(5); // 返回值是2但是本次alarm会重新定5sprintf(2st, ret %d.\n, ret);sleep(1);ret alarm(5); //返回值时4但是本次的alarm会重新定5sprintf(3st, ret %d.\n, ret);//while (1);pause();
*/ return 0;
}void mysleep(unsigned int seconds)
{struct sigaction act {0};//act.sa_handler func;//sigaction(SIGALRM, act, NULL);//这三行应该能省略吧alarm(seconds);pause();
}