具体数据结构和用法可以man setitimer查询,很简单易懂的一段英文,应该没什么难度,下面是我联系的一个小例子:
[color=blue]#include[/color] [color=red]<stdio.h>[/color]
[color=blue]#include[/color] [color=red]<stdlib.h>[/color]
[color=blue]#include[/color] [color=red]<sys/time.h>[/color]
[color=blue]#include[/color] [color=red]<signal.h>[/color]
[color=blue]#include[/color] [color=red]<string.h>[/color]
[color=green]int[/color] main()
{
[color=green]void[/color] countdown([color=green]int[/color]);
signal([color=red]SIGALRM[/color], countdown);
[color=green]struct[/color] itimerval new_timeset;
memset(&new_timeset, [color=red]0[/color], [color=brown]sizeof[/color](new_timeset));
new_timeset.it_interval.tv_sec = [color=red]1L[/color];
new_timeset.it_interval.tv_usec = [color=red]0L[/color];
new_timeset.it_value.tv_sec = [color=red]2L[/color];
new_timeset.it_value.tv_usec = [color=red]0L[/color];
[color=brown]if[/color](setitimer(ITIMER_REAL, &new_timeset, [color=red]NULL[/color]) == -[color=red]1[/color])
perror([color=red]"set timer"[/color]);
[color=brown]else[/color]
[color=brown]while[/color](1)
pause();
[color=brown]return[/color] 0;
}
[color=green]void[/color] countdown([color=green]int[/color] signum)
{
[color=green]static int[/color] num = [color=red]10[/color];
printf([color=red]"[/color][color=violet]%d[/color][color=red].."[/color], num--);
fflush([color=red]stdout[/color]);
[color=brown]if[/color](num < 0)
{
printf([color=red]"DONE!\n"[/color]);
exit([color=red]0[/color]);
}
}
[color=blue]#include[/color] [color=red]<stdio.h>[/color]
[color=blue]#include[/color] [color=red]<stdlib.h>[/color]
[color=blue]#include[/color] [color=red]<sys/time.h>[/color]
[color=blue]#include[/color] [color=red]<signal.h>[/color]
[color=blue]#include[/color] [color=red]<string.h>[/color]
[color=green]int[/color] main()
{
[color=green]void[/color] countdown([color=green]int[/color]);
signal([color=red]SIGALRM[/color], countdown);
[color=green]struct[/color] itimerval new_timeset;
memset(&new_timeset, [color=red]0[/color], [color=brown]sizeof[/color](new_timeset));
new_timeset.it_interval.tv_sec = [color=red]1L[/color];
new_timeset.it_interval.tv_usec = [color=red]0L[/color];
new_timeset.it_value.tv_sec = [color=red]2L[/color];
new_timeset.it_value.tv_usec = [color=red]0L[/color];
[color=brown]if[/color](setitimer(ITIMER_REAL, &new_timeset, [color=red]NULL[/color]) == -[color=red]1[/color])
perror([color=red]"set timer"[/color]);
[color=brown]else[/color]
[color=brown]while[/color](1)
pause();
[color=brown]return[/color] 0;
}
[color=green]void[/color] countdown([color=green]int[/color] signum)
{
[color=green]static int[/color] num = [color=red]10[/color];
printf([color=red]"[/color][color=violet]%d[/color][color=red].."[/color], num--);
fflush([color=red]stdout[/color]);
[color=brown]if[/color](num < 0)
{
printf([color=red]"DONE!\n"[/color]);
exit([color=red]0[/color]);
}
}