Print this page
3245 in.ndp daemon should not be session leader

*** 923,965 **** logmsg(LOG_DEBUG, "daemonize_ndpd: failed to get itimerval\n"); timerval = _B_FALSE; } /* Daemonize. */ ! switch (fork()) { ! case 0: ! /* Child */ ! break; ! case -1: logperror("fork"); exit(1); - default: - /* Parent */ - _exit(0); } ! /* Store our process id, blow away any existing file if it exists. */ ! if ((pidfp = fopen(PATH_PID, "w")) == NULL) { ! (void) fprintf(stderr, "%s: unable to open " PATH_PID ": %s\n", ! argv0[0], strerror(errno)); ! } else { (void) fprintf(pidfp, "%ld\n", getpid()); (void) fclose(pidfp); (void) chmod(PATH_PID, pidmode); } - (void) close(0); - (void) close(1); - (void) close(2); - - (void) chdir("/"); - (void) open("/dev/null", O_RDWR); - (void) dup2(0, 1); - (void) dup2(0, 2); - (void) setsid(); - already_daemonized = _B_TRUE; /* * Restore timer values, if we were able to save them; if not, * check and set the right value by calling run_timeouts(). --- 923,951 ---- logmsg(LOG_DEBUG, "daemonize_ndpd: failed to get itimerval\n"); timerval = _B_FALSE; } + /* Open pid file, blow away any existing file if it exists. */ + if ((pidfp = fopen(PATH_PID, "w")) == NULL) { + (void) fprintf(stderr, "%s: unable to open " PATH_PID ": %s\n", + argv0[0], strerror(errno)); + } + /* Daemonize. */ ! if (daemon(0, 0) == -1) { logperror("fork"); exit(1); } ! /* Store our process id */ ! if (pidfp != NULL) { (void) fprintf(pidfp, "%ld\n", getpid()); (void) fclose(pidfp); (void) chmod(PATH_PID, pidmode); } already_daemonized = _B_TRUE; /* * Restore timer values, if we were able to save them; if not, * check and set the right value by calling run_timeouts().