main()" D' S5 y3 O6 D, J" l# h8 V& V2 s
{% C0 r% Q6 Z0 H1 ]$ ~% A/ p/ ]
void countdown(int);
! K, w6 e. y4 ^! M( X: C Oint set_ticker(int);
) F+ m# \ _! V: [" |.....
: U; C- }% K5 q% i- x
R; B! t+ k5 D4 w7 P) i/* 这两个函数原形放在这里是启到声名作用(也就是我要显示调用它们) */
. Z: \9 V0 f4 `2 Y! L4 }( Uvoid countdown(int) 是信号处理函数$ s$ K1 m+ Q/ W4 x, T: f4 D
set_ticker(int)是设置interval timer 的函数1 G7 H4 i1 f2 J9 e
我的问题是设置了interval timer却看不到预期植
. z/ }7 w8 [% X- l- Q. I预期值应该是这样的:
% H- B: d; H9 |' ?10..9..8..7..6..5..4..3..2..1..DONE!
- b7 T9 R z u' f2 W0 O
6 c" R0 h7 z4 o7 T
/ ?7 e/ g0 }1 j/ S, j5 _/ I我把程序改为以下这样没有问题可以看到预期值 是不是我设置的interval timer有问题?( E& D' G6 V& R0 o4 Z# y I
! T. D; F& w, W: s#include <stdio.h>7 d( g( }; t- r! Z$ T6 z
#include <unistd.h>
. B3 c2 n, O8 \4 V0 l; I; }#include <sys/time.h>4 k, G/ B8 }+ z# x$ A4 Q7 T( f
#include <signal.h>) l! t! j; P! \7 b8 U6 Q
#include <stdlib.h>
# U q( J! u0 V$ B- j
$ b& _9 e1 @8 {# Lint main(void)
- R% O$ u- [ w: u- |3 e: E{
* \0 b: L9 }, k# J' Lvoid countdown(int);! \; {, P- \* x2 ^( {4 x, O/ J% K
signal(SIGALRM,countdown);
) S) ?5 L/ H0 V( X5 ewhile(1){
9 ^( ^0 }) F( h1 A* @, x6 i alarm(1);$ r- J I% p8 B- e' r
pause();/ F3 N1 o2 a( l1 ?2 b, W
}
# ?& i- _2 L l( ireturn 0;
/ T9 l& A9 K t2 X1 L# P- i/ v0 T}
. s. w& M K0 s. g# T9 L
. e# Z- v5 F2 v) ^8 H( _void countdown(int signum), Z% k( k/ E' f
{
* V- L* A( x, r& f( Gstatic int num = 10;
4 u+ J2 ]$ g: d8 I0 iprintf("%d..",num--);
/ h) F; U- e% d2 f( Cfflush(stdout);; n. o/ ~6 `$ t- C8 H- G' p
if (num < 0){0 A4 B8 {8 ~5 A. J% a
printf("DONE!\n");; g G* h* i5 h6 O- p( m
exit(0);2 V! f# h7 v/ @6 o7 l1 k" p4 B
}
- [3 f; Y; m- m* C( C}