commit 811e5fc9b529d6efa2833e58e9a08165490f3281
parent bcb369a656d09ae2c2bb76d99622afc9ba33474b
Author: Christoph Lohmann <20h@r-36.net>
Date: Fri, 24 May 2019 19:30:12 +0200
Fix runentry to not spawn zombies.
Thanks to Platon Ryzhikov <ihummer63@yandex.ru> for reporting!
Diffstat:
1 file changed, 13 insertions(+), 12 deletions(-)
diff --git a/thingmenu.c b/thingmenu.c
@@ -524,21 +524,22 @@ void
runentry(Entry *e)
{
char *shell;
+ int pid;
- if (fork()) {
- if (oneshot || e->forceexit) {
- running = False;
- }
- return;
- }
- if (fork())
- exit(0);
+ if (oneshot || e->forceexit)
+ running = False;
- shell = getenv("SHELL");
- if (!shell)
- shell = "/bin/sh";
+ switch (pid = fork()) {
+ case -1:
+ return;
+ case 0:
+ shell = getenv("SHELL");
+ if (!shell)
+ shell = "/bin/sh";
- execlp(shell, basename(shell), "-c", e->cmd, (char *)NULL);
+ execlp(shell, basename(shell), "-c", e->cmd, (char *)NULL);
+ break;
+ }
}
void