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