diff --git a/src/service.c b/src/service.c index cb8399cf..b64bdec7 100644 --- a/src/service.c +++ b/src/service.c @@ -191,9 +191,6 @@ static int lredirect(svc_t *svc) return -1; } - dup2(fd, STDOUT_FILENO); - dup2(fd, STDERR_FILENO); - pid = fork(); if (pid == 0) { int fds; @@ -240,6 +237,9 @@ static int lredirect(svc_t *svc) _exit(0); } + dup2(fd, STDOUT_FILENO); + dup2(fd, STDERR_FILENO); + return close(fd); } @@ -371,6 +371,9 @@ static int service_start(svc_t *svc) } args[i] = NULL; + redirect(svc); + sig_unblock(); + /* * The setsid() call is the most humble of all in this * function. It takes care to detach the process from @@ -385,9 +388,6 @@ static int service_start(svc_t *svc) */ setsid(); - redirect(svc); - sig_unblock(); - if (svc_is_runtask(svc)) status = exec_runtask(svc->cmd, args); else