X-Git-Url: http://the.earth.li/gitweb/?a=blobdiff_plain;f=keyd.c;h=8b61d0cece78569b0ca8079c1902f4d4e4db5a38;hb=f4734fb615e269af498d4c24ba402c2deba4730b;hp=b8b8ad37e6bf1eff136eb089807687cc51650958;hpb=b2f2bc60555e2d953069c40d8d3cdecfcec9ac29;p=onak.git diff --git a/keyd.c b/keyd.c index b8b8ad3..8b61d0c 100644 --- a/keyd.c +++ b/keyd.c @@ -65,11 +65,35 @@ void daemonize(void) exit(EXIT_SUCCESS); } - setsid(); + if (setsid() == -1) { + logthing(LOGTHING_CRITICAL, + "Couldn't set process group leader: %d (%s)", + errno, + strerror(errno)); + exit(EXIT_FAILURE); + } - freopen("/dev/null", "r", stdin); - freopen("/dev/null", "w", stdout); - freopen("/dev/null", "w", stderr); + if (!freopen("/dev/null", "r", stdin)) { + logthing(LOGTHING_CRITICAL, + "Couldn't reopen stdin to NULL: %d (%s)", + errno, + strerror(errno)); + exit(EXIT_FAILURE); + } + if (!freopen("/dev/null", "w", stdout)) { + logthing(LOGTHING_CRITICAL, + "Couldn't reopen stdout to NULL: %d (%s)", + errno, + strerror(errno)); + exit(EXIT_FAILURE); + } + if (!freopen("/dev/null", "w", stderr)) { + logthing(LOGTHING_CRITICAL, + "Couldn't reopen stderr to NULL: %d (%s)", + errno, + strerror(errno)); + exit(EXIT_FAILURE); + } return; }