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. */