--- src/conky.c.old 2005-11-16 19:32:39.000000000 -0500 +++ src/conky.c 2005-11-22 21:36:19.825035248 -0500 @@ -4964,6 +4964,8 @@ int main(int argc, char **argv) { + struct sigaction act, oact; + g_signal_pending=0; memset(&info, 0, sizeof(info) ); @@ -5241,9 +5243,14 @@ } /* Set signal handlers */ - if ( signal(SIGINT,signal_handler) == SIG_ERR || - signal(SIGUSR1,signal_handler) == SIG_ERR || - signal(SIGTERM,signal_handler) == SIG_ERR ) + act.sa_handler = signal_handler; + sigemptyset(&act.sa_mask); + act.sa_flags = 0; + act.sa_flags |= SA_RESTART; + + if ( sigaction(SIGINT,&act,&oact) < 0 || + sigaction(SIGUSR1,&act,&oact) < 0 || + sigaction(SIGTERM,&act,&oact) < 0 ) { ERR("error setting signal handler: %s", strerror(errno) ); }