diff options
Diffstat (limited to 'fstests/timertest.c')
-rw-r--r-- | fstests/timertest.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/fstests/timertest.c b/fstests/timertest.c index 2d602560..6eca98ef 100644 --- a/fstests/timertest.c +++ b/fstests/timertest.c @@ -32,14 +32,20 @@ alarm_handler (int signo) int main(int argc, char *argv[]) { + struct sigaction alarm_sigaction = { 0 }; + sigset_t empty_sigset; struct itimerval real_timer; + sigemptyset (&empty_sigset); + real_timer.it_interval.tv_usec = 0; real_timer.it_interval.tv_sec = 1; real_timer.it_value.tv_usec = 0; real_timer.it_value.tv_sec = 1; - signal (SIGALRM, alarm_handler); + alarm_sigaction.sa_handler = &alarm_handler; + alarm_sigaction.sa_flags = SA_RESTART; + sigaction (SIGALRM, &alarm_sigaction, NULL); if (setitimer (ITIMER_REAL, &real_timer, 0) < 0) error (1, errno, "Setting timer"); @@ -56,7 +62,7 @@ main(int argc, char *argv[]) { puts ("Saw EOF. Pausing (no input)..."); fflush (stdout); - sigpause (0); + sigsuspend (&empty_sigset); } else printf ("Saw %.3o\n", c); |