mirror of
https://github.com/jarun/nnn.git
synced 2024-11-20 01:49:14 +00:00
Fix #225
This commit is contained in:
parent
e973330c91
commit
32dde3390a
33
src/nnn.c
33
src/nnn.c
|
@ -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();
|
||||
}
|
||||
|
||||
free(cmd);
|
||||
}
|
||||
|
||||
/* Parent */
|
||||
retstatus = join(pid, flag);
|
||||
|
||||
DPRINTF_D(pid);
|
||||
if (flag & F_NORMAL) {
|
||||
nonl();
|
||||
noecho();
|
||||
}
|
||||
|
||||
free(cmd);
|
||||
|
||||
return retstatus;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue