diff --git a/Main.c b/Main.c
index 247e65ef1b75dce79533192f2f3ef18745e09b77..68117d06dcbf2282f0fe75200a661559d3274e35 100644
--- a/Main.c
+++ b/Main.c
@@ -19,9 +19,11 @@
 
 
 #define _BSD_SOURCE
+#define _POSIX_SOURCE
 
 // Import headers.
 #include <ctype.h>
+#include <signal.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -56,6 +58,7 @@ void change_directory();    // Change current directory.
 char* get_directory_path(); // Gets full pathname of current directory.
 void get_umask();           // Gets current umask value.
 void set_umask();           // Sets umask value.
+void handler();             // Handler for ctrl+c signal.
 void free_memory();         // Frees memory of vars.
 
 void make_arg_example();
@@ -69,6 +72,13 @@ int main(int argc, char* argv[]) {
     int run_program = 1;
     char* user_input;
     char* current_directory;
+    struct sigaction action;
+
+    // Set ctrl+c signal interupt.
+    memset(&action, '\0', sizeof(action));
+    action.sa_handler = handler;
+    action.sa_flags = SA_RESTART;
+    sigaction(SIGINT, &action, NULL);
 
     // parse_line("");
     // free_memory();
@@ -395,6 +405,14 @@ void set_umask(char* string_val) {
 }
 
 
+/**
+ * Handler for ctrl+c signal.
+ */
+void handler() {
+    printf(" - Nope.\n");
+}
+
+
 /**
  * Frees memory of main program variables.
  */