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 <errno.h>
//#include <sys/types.h>
#include <signal.h>
+#include <sys/wait.h>
-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