From 78615157edb1b25a8d64ad59b8649713cd39b42c Mon Sep 17 00:00:00 2001 From: erdgeist <> Date: Sat, 2 Mar 2013 01:06:36 +0000 Subject: Write pid file, when requested --- jaildaemon.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/jaildaemon.c b/jaildaemon.c index ae750f3..506ca98 100644 --- a/jaildaemon.c +++ b/jaildaemon.c @@ -349,11 +349,20 @@ int main( int argc, char **argv ) { /* Start a fork slave while there is no file descriptors or initialized memory yet. Communicate with this slave via socketpair */ if( o_daemonize ) { - if( daemon(0,0) == -1 ) + if( daemon(1,0) == -1 ) exerr( "daemonzing" ); g_fork_slave_fd = fork_fork_slave( ); - openlog( "jaildaemon", 0, LOG_DAEMON ); + /* When we're supposed to write a pidfile, just do it */ + if( o_pidfile ) { + FILE *fp = fopen( o_pidfile, "w"); + if (!fp) + exerr("opening pid file"); + fprintf(fp, "%d\n", (int)getpid()); + fclose(fp); + } + + openlog( "jaildaemon", 0, LOG_DAEMON ); setlogmask(LOG_UPTO(LOG_INFO)); g_whoami = IAM_DAEMON; @@ -363,7 +372,7 @@ int main( int argc, char **argv ) { usage( argv[0] ); } - /* Setup unix domain socket descriptors */ + /* Setup unix domain socket descriptors */ g_uds = socket(AF_UNIX, SOCK_DGRAM, 0); if( g_uds < 0 ) exerr( "Can not create control channel." ); -- cgit v1.2.3