commit 955152417fd24026dfd5582068cb50219419b137
parent 3f95571b3892b3faaaf94c3571ac9669f1d1fd91
Author: lostd <lostd@2f30.org>
Date: Mon, 13 Oct 2014 10:22:05 +0300
Properly wait for processes to terminate
Diffstat:
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/noice.c b/noice.c
@@ -427,6 +427,7 @@ begin:
char *tmp;
regex_t re;
struct history *hist;
+ int status;
redraw:
nlines = MIN(LINES - 4, n);
@@ -560,10 +561,16 @@ nochange:
/* Run program */
pid = fork();
- if (pid == 0)
+ if (pid == 0) {
execlp(bin, bin, pathnew, NULL);
- else
- waitpid(pid, NULL, 0);
+ _exit(0);
+ } else {
+ /* Ignore interruptions */
+ while (waitpid(pid, &status,
+ 0) == -1)
+ DPRINTF_D(status);
+ DPRINTF_D(pid);
+ }
initcurses();