23,217
社区成员




#include <sys/time.h>
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <string.h>
#include <stdlib.h>
static char msg[] = "time is running out.\n";
static int len;
/* time's up */
void prompt_info (int signo)
{
write (STDERR_FILENO, msg, len);
}
void init_sigaction (void)
{
struct sigaction tact;
tact.sa_handler = prompt_info;
tact.sa_flags = 0;
sigemptyset (&tact.sa_mask);
sigaction (SIGALRM, &tact, NULL);
}
void init_time ()
{
struct itimerval value;
value.it_value.tv_sec = 2;
value.it_value.tv_usec = 0;
value.it_interval = value.it_value;
/* set ITIMER_REAL */
setitimer (ITIMER_REAL, &value, NULL);
}
int main (int argc, char** argv)
{
len = strlen (msg);
init_sigaction ();
init_time ();
while (1);
exit (0);
}
// init timer
void TimerFactory::init_timer()
{
struct itimerval value;
value.it_value.tv_sec = 1; // min interval 1 second
value.it_value.tv_usec = 0;
value.it_interval = value.it_value;
Setitimer(ITIMER_REAL, &value, NULL );
return;
}
// init signal
void TimerFactory::init_signal()
{
Signal(SIGALRM, on_alarm);
return;
}
// callback to do things when SIGALARM arrived
void TimerFactory::on_alarm(int signo)
{
// do things you like here.
return;
}