diff --git a/helpers.c b/helpers.c index 0bc25eab..072b9be2 100644 --- a/helpers.c +++ b/helpers.c @@ -446,7 +446,7 @@ int run(char *cmd) return 1; } - pid = fork(); + pid = vfork(); if (0 == pid) { int i; FILE *fp; @@ -563,7 +563,7 @@ int run_interactive(char *cmd, char *fmt, ...) pid_t run_getty(char *cmd, char *args[], int console) { - pid_t pid = fork(); + pid_t pid = vfork(); if (!pid) { int i, fd; @@ -629,7 +629,7 @@ pid_t run_getty(char *cmd, char *args[], int console) int run_parts(char *dir, char *cmd) { struct dirent **e; - int i, num; + volatile int i, num; num = scandir(dir, &e, NULL, alphasort); if (num < 0) { @@ -669,7 +669,7 @@ int run_parts(char *dir, char *cmd) } args[j++] = NULL; - pid = fork(); + pid = vfork(); if (!pid) { _d("Calling %s ...", path); execv(path, args); diff --git a/svc.c b/svc.c index 23b1ad1c..ca359ed5 100644 --- a/svc.c +++ b/svc.c @@ -458,7 +458,7 @@ int svc_start(svc_t *svc) sigaddset(&nmask, SIGCHLD); sigprocmask(SIG_BLOCK, &nmask, &omask); - pid = fork(); + pid = vfork(); sigprocmask(SIG_SETMASK, &omask, NULL); if (pid == 0) { int i = 0;