X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fdaemon.c;h=2f6f08192016c03827047a14f4cc1c0e0b917e4e;hb=23e795f4dd9af5191773a5ee840642737a37e91d;hp=9db6c1f8a9bd3e43901f5a6f64e1560ad90837da;hpb=e7668254f2f8f7208905c858ffbc84a65bb13815;p=openvswitch diff --git a/lib/daemon.c b/lib/daemon.c index 9db6c1f8..2f6f0819 100644 --- a/lib/daemon.c +++ b/lib/daemon.c @@ -223,11 +223,11 @@ make_pidfile(void) pidfile, strerror(errno)); } } - free(text); } else { VLOG_ERR("%s: write failed: %s", tmpfile, strerror(errno)); close(fd); } + free(text); } else { VLOG_ERR("%s: fcntl failed: %s", tmpfile, strerror(errno)); close(fd); @@ -475,11 +475,14 @@ daemonize_start(void) } /* If daemonization is configured, then this function notifies the parent - * process that the child process has completed startup successfully. */ + * process that the child process has completed startup successfully. + * + * Calling this function more than once has no additional effect. */ void daemonize_complete(void) { fork_notify_startup(daemonize_fd); + daemonize_fd = -1; if (detach) { setsid(); @@ -487,6 +490,7 @@ daemonize_complete(void) ignore(chdir("/")); } close_standard_fds(); + detach = false; } }