From ae33b348afa800447db9344cf6e5d082f1a1fcb3 Mon Sep 17 00:00:00 2001 From: Warren Dukes Date: Sun, 11 Apr 2004 23:07:43 +0000 Subject: clean up signal handling using a polling method, from the genius that is mackstann git-svn-id: https://svn.musicpd.org/mpd/trunk@697 09075e82-0dd4-0310-85a5-a0d7c8717e4f --- src/player.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src/player.c') diff --git a/src/player.c b/src/player.c index 3bd6508ac..ecf7036f3 100644 --- a/src/player.c +++ b/src/player.c @@ -69,9 +69,11 @@ void resetPlayer() { void player_sigChldHandler(int pid, int status) { if(player_pid==pid) { - if(WIFSIGNALED(status) && WTERMSIG(status)!=SIGTERM) { - ERROR("player process died from a " - "non-TERM signal: %i\n", + DEBUG("SIGCHLD caused by player process\n"); + if(WIFSIGNALED(status) && WTERMSIG(status)!=SIGTERM && + WTERMSIG(status)!=SIGINT) + { + ERROR("player process died from signal: %i\n", WTERMSIG(status)); } resetPlayer(); @@ -100,12 +102,11 @@ int playerInit() { sa.sa_flags = 0; sigemptyset(&sa.sa_mask); - sa.sa_handler = SIG_IGN; - sigaction(SIGPIPE,&sa,NULL); - sigaction(SIGHUP,&sa,NULL); + finishSigHandlers(); sa.sa_handler = decodeSigHandler; sigaction(SIGCHLD,&sa,NULL); sigaction(SIGTERM,&sa,NULL); + sigaction(SIGINT,&sa,NULL); close(listenSocket); freeAllInterfaces(); -- cgit v1.2.3