Arun Prakash Jana 5 anni fa
parent
commit
32dde3390a
1 ha cambiato i file con 20 aggiunte e 9 eliminazioni
  1. +20
    -9
      src/nnn.c

+ 20
- 9
src/nnn.c Vedi File

@@ -936,7 +936,15 @@ static int join(pid_t p, uchar flag)
if (!(flag & F_NOWAIT)) {
/* wait for the child to exit */
do {
} while (waitpid(p, &status, 0) == -1);
/* Exit if parent has exited */
if (getppid() == 1) {
/* Kill child */
kill(p, SIGKILL);

/* Exit */
_exit(0);
}
} while (waitpid(p, &status, WNOHANG) <= 0);

if (WIFEXITED(status)) {
status = WEXITSTATUS(status);
@@ -1000,6 +1008,8 @@ static int spawn(char *file, char *arg1, char *arg2, const char *dir, uchar flag
exitcurses();

pid = xfork(flag);

/* Child */
if (pid == 0) {
if (dir && chdir(dir) == -1)
_exit(1);
@@ -1015,18 +1025,19 @@ static int spawn(char *file, char *arg1, char *arg2, const char *dir, uchar flag

execvp(*argv, argv);
_exit(1);
} else {
retstatus = join(pid, flag);
}

DPRINTF_D(pid);
if (flag & F_NORMAL) {
nonl();
noecho();
}
/* Parent */
retstatus = join(pid, flag);

free(cmd);
DPRINTF_D(pid);
if (flag & F_NORMAL) {
nonl();
noecho();
}

free(cmd);

return retstatus;
}



Loading…
Annulla
Salva