一、pause(2)使用
#include <unistd.h>
int pause(void);
功能:等待信号到来,先睡觉,有信号到来通知(暂停)
参数:无
返回值:-1 错误 errno被设置
只有在信号处理函数执行完毕后才会返回
举例: 利用所学编码实现sleep函数的功能(psleep.c)
sleep函数原型:unsigned int sleep(unsigned int seconds);
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
//信号处理函数
void doit(int n) {
// printf("hahah");
}
unsigned int psleep(unsigned int s) {
alarm(s);
pause();//等待信号到来,信号到来产生返回值-1,errno被设置
return (alarm(0));//返回之前的剩余时间
}
int main(void) {
signal(SIGALRM, doit) ;//改变信号的处理函数,为了使进程不终止
while(1) {
psleep(2);
printf(".....\n");
}
return 0;
}
tarena@ubuntu:~/day/day33$ a.out
.....
.....
.....
.....
^C
分析: 先改变信号的处理方式,不改变信号的处理方式的话执行代码之后2S后显示一下“闹钟“就会结束进程
进入死循环,调用psleep函数,在函数中alarm每s秒产生一次信号,每次产生信号pause接收到继续执行下面的代码。
【C语言】【unix c】pause(2)使用
最新推荐文章于 2024-07-25 20:45:01 发布