version 1.437, 2016/03/07 19:02:43 |
version 1.438, 2016/04/29 08:07:53 |
|
|
control_persist_detach(void) |
control_persist_detach(void) |
{ |
{ |
pid_t pid; |
pid_t pid; |
int devnull; |
int devnull, keep_stderr; |
|
|
debug("%s: backgrounding master process", __func__); |
debug("%s: backgrounding master process", __func__); |
|
|
|
|
error("%s: open(\"/dev/null\"): %s", __func__, |
error("%s: open(\"/dev/null\"): %s", __func__, |
strerror(errno)); |
strerror(errno)); |
} else { |
} else { |
|
keep_stderr = log_is_on_stderr() && debug_flag; |
if (dup2(devnull, STDIN_FILENO) == -1 || |
if (dup2(devnull, STDIN_FILENO) == -1 || |
dup2(devnull, STDOUT_FILENO) == -1) |
dup2(devnull, STDOUT_FILENO) == -1 || |
|
(!keep_stderr && dup2(devnull, STDERR_FILENO) == -1)) |
error("%s: dup2: %s", __func__, strerror(errno)); |
error("%s: dup2: %s", __func__, strerror(errno)); |
if (devnull > STDERR_FILENO) |
if (devnull > STDERR_FILENO) |
close(devnull); |
close(devnull); |