From 22ed1c123825f8effb7296f7ae54b9b5bef55854 Mon Sep 17 00:00:00 2001 From: rick Date: Fri, 5 Mar 2021 20:24:28 +0100 Subject: [PATCH] Tuer le zombie close #15 --- src/boitoutil/essential_shell.c | 11 +++++------ src/boitoutil/essential_shell.h | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/boitoutil/essential_shell.c b/src/boitoutil/essential_shell.c index 217dd81..8629475 100644 --- a/src/boitoutil/essential_shell.c +++ b/src/boitoutil/essential_shell.c @@ -15,8 +15,9 @@ #include //#include #include +#include -pid_t pid; +pid_t pid = 0; int exit_code = 0; int need_exit = 0; @@ -114,12 +115,10 @@ void thus_export(char *command[]) setenv(var, val, 1); } -void ctrl_c_handler() +void ctrl_c_handler(int signum) { - //kill(pid, SIGTERM); - //kill(pid, SIGKILL); - kill(getpid(), SIGCHLD); - printf("\n"); + while (!waitpid(pid, NULL, WNOHANG)) {} + putchar('\n'); } /** diff --git a/src/boitoutil/essential_shell.h b/src/boitoutil/essential_shell.h index 030a1bf..15d153a 100644 --- a/src/boitoutil/essential_shell.h +++ b/src/boitoutil/essential_shell.h @@ -27,7 +27,7 @@ int native_command(char *command[]); void change_dir(char *command[]); void thus_exit(char *command[]); void thus_export(char *command[]); -void ctrl_c_handler(); +void ctrl_c_handler(int signum); void error(int code, int type, char *message); #endif