diff --git a/src/commands.c b/src/commands.c index 13e9c330aedcb9d3c1c0979a5b22fd7844516ada..2623128c335586612da928c41b98e879a1001a33 100644 --- a/src/commands.c +++ b/src/commands.c @@ -3,6 +3,9 @@ #include <string.h> #include <assert.h> +#include <wait.h> +#include <unistd.h> + #include "commands.h" #include "built_in.h" @@ -49,6 +52,19 @@ int evaluate_command(int n_commands, struct single_command (*commands)[512]) return 0; } else if (strcmp(com->argv[0], "exit") == 0) { return 1; + } else if (strcmp(com->argv[0], com->argv)) { //compare input command = argv + int pid = fork(); //create child + int *parentStatus; + + if (pid < 0) { //failed process + fprintf(stderr,"Failed create process\n"); + } + else if (pid == 0) { + fprintf(stderr,"Execv doesn't execute\n"); + } + else { + wait(parentStatus); + } } else { fprintf(stderr, "%s: command not found\n", com->argv[0]); return -1; diff --git a/src/signal_handlers.c b/src/signal_handlers.c index 4b6fe2e073f327917964b5327b6649f74bcbda1e..f65cd8a77e1c70df3f0d0ec44af9fa3b13e3c1d9 100644 --- a/src/signal_handlers.c +++ b/src/signal_handlers.c @@ -1,11 +1,17 @@ +#include <stdio.h> +#include <signal.h> #include "signal_handlers.h" void catch_sigint(int signalNo) { + printf("you input Ctrl + C\n"); + signal(signalNo,SIG_IGN); // TODO: File this! } void catch_sigtstp(int signalNo) { + printf("you input Ctrl + Z\n"); + signal(signalNo,SIG_IGN); // TODO: File this! }