先看一个例程:
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
void sig_alarm(int sig)
{
printf("here.\r\n");
}
int main(int argc, char *argv[])
{
int tm_remain = 0;
int i;
signal(SIGALRM, sig_alarm);
alarm(120);
for (i = 0; i < 5; i ++) {
printf("sleeping...\r\n");
sleep(1);
}
tm_remain = alarm(20);
printf("tm remain: %d\r\n", tm_remain);
while(1){
sleep(4);
}
return (0);
}
alarm()的函数原型如下:
#include <unistd.h>
unsigned int alarm(unsigned int secs);
理解了上述介绍,对于测试例程的结果,便很好明白:
$ ./a.out
sleeping...
sleeping...
sleeping...
sleeping...
sleeping...
tm remain: 115
here.