aboutsummaryrefslogtreecommitdiff
path: root/runit/sv.c
diff options
context:
space:
mode:
Diffstat (limited to 'runit/sv.c')
-rw-r--r--runit/sv.c17
1 files changed, 6 insertions, 11 deletions
diff --git a/runit/sv.c b/runit/sv.c
index 051e64e67..d52eb6d22 100644
--- a/runit/sv.c
+++ b/runit/sv.c
@@ -310,21 +310,16 @@ static int checkscript(void)
return 0;
}
/* if (!(s.st_mode & S_IXUSR)) return 1; */
- if ((pid = fork()) == -1) {
- bb_perror_msg(WARN"cannot fork for %s/check", *service);
+ prog[0] = (char*)"./check";
+ prog[1] = NULL;
+ pid = spawn(prog);
+ if (pid <= 0) {
+ bb_perror_msg(WARN"cannot %s child %s/check", "run", *service);
return 0;
}
- if (!pid) {
- prog[0] = (char*)"./check";
- prog[1] = NULL;
- close(1);
- execve("check", prog, environ);
- bb_perror_msg(WARN"cannot run %s/check", *service);
- _exit(0);
- }
while (wait_pid(&w, pid) == -1) {
if (errno == EINTR) continue;
- bb_perror_msg(WARN"cannot wait for child %s/check", *service);
+ bb_perror_msg(WARN"cannot %s child %s/check", "wait for", *service);
return 0;
}
return !wait_exitcode(w);