首页 / 操作系统 / Linux / alarm信号定时运行程序 Linux
alarm信号定时运行程序 Linux#include <stdio.h>
#include <signal.h>void sigprint(int n)
{
printf("2 seconds past.
");
int i ;
for(i = 0;i<1000;i++)
for(i = 0;i<1000;i++)
for(i = 0;i<1000;i++)
for(i = 0;i<1000;i++)
;
}int mysleep(int nsec)
{
int unleft;
sigset_t newmask,oldmask,susmask;
struct sigaction newact,oldact; newact.sa_handler = sigprint;
sigemptyset(&newact.sa_mask);
newact.sa_flags = 0;
sigaction(SIGALRM,&newact,&oldact); sigemptyset(&newmask);
sigaddset(&newmask,SIGALRM);
sigprocmask(SIG_BLOCK,&newmask,&oldmask); alarm(nsec);
susmask = oldmask;
sigdelset(&susmask,SIGALRM);
sigsuspend(&susmask); unleft = alarm(0);
sigaction(SIGALRM,&oldact,NULL);
sigprocmask(SIGALRM,&oldmask,NULL);
return unleft ;
}int main(void)
{
int i = 10; while(i){
mysleep(2);
i--;
}
return 0;
}