nnn

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 375d1057c1fbaba026be54779d7ba68c6b62c2a9
parent 907616a0580106e9925f49ae59d9a7f5a1fd136b
Author: PiƱa Colada <engineerarun@gmail.com>
Date:   Wed, 12 May 2021 19:31:38 +0530

Merge pull request #1000 from KlzXS/plguin_child

Wait for child on plugin invocation
Diffstat:
Msrc/nnn.c | 7++++++-
1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/nnn.c b/src/nnn.c @@ -4785,6 +4785,8 @@ static void readpipe(int fd, char **path, char **lastname, char **lastdir) static bool run_selected_plugin(char **path, const char *file, char *runfile, char **lastname, char **lastdir) { + int status; + pid_t p; bool cmd_as_plugin = FALSE; uchar_t flags = 0; @@ -4821,7 +4823,7 @@ static bool run_selected_plugin(char **path, const char *file, char *runfile, ch exitcurses(); - if (fork() == 0) { // In child + if ((p = fork()) == 0) { // In child int wfd = open(g_pipepath, O_WRONLY | O_CLOEXEC); if (wfd == -1) @@ -4852,6 +4854,9 @@ static bool run_selected_plugin(char **path, const char *file, char *runfile, ch readpipe(rfd, path, lastname, lastdir); close(rfd); + /* wait for the child to finish. no zombies allowed */ + waitpid(p, &status, 0); + refresh(); unlink(g_pipepath);