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