summaryrefslogtreecommitdiffstats
path: root/02_exercise/shell.c
diff options
context:
space:
mode:
Diffstat (limited to '02_exercise/shell.c')
-rw-r--r--02_exercise/shell.c18
1 files changed, 4 insertions, 14 deletions
diff --git a/02_exercise/shell.c b/02_exercise/shell.c
index 03ff6b3..f32bb95 100644
--- a/02_exercise/shell.c
+++ b/02_exercise/shell.c
@@ -3,28 +3,16 @@
#include <string.h>
#include <unistd.h>
#include <stdbool.h>
-#include <wait.h>
#include <errno.h>
#include "array.h"
#include "process.h"
-#include "prompt_utils.h"
#include "builtins.h"
+#include "prompt_utils.h"
+#include "signal_handler.h"
process *processes;
-void signal_handler(int signal) {
- printf("Received signal %d", signal);
- if (signal == SIGINT) {
- for (size_t i = 0; i < arrayLen(processes); ++i) {
- pid_t pid = processes[i].pid;
- if (pid != 0) {
- kill(pid, SIGINT);
- }
- }
- }
-}
-
int main(void) {
setvbuf(stderr, NULL, _IONBF, 0);
setvbuf(stdout, NULL, _IONBF, 0);
@@ -59,6 +47,8 @@ int main(void) {
exit(-1);
}
+ interrupt_issued = 0;
+
if (strspn(line, " \n\t") == strlen(line)) {
// skip empty lines - empty being just spaces or tabs
continue;