summaryrefslogtreecommitdiffstats
path: root/02_exercise/shell.c
diff options
context:
space:
mode:
authorNiklas Halle <niklas@niklashalle.net>2020-05-25 19:42:24 +0200
committerNiklas Halle <niklas@niklashalle.net>2020-05-25 19:42:24 +0200
commit589ec07d1ec29e9e33714fcc0f213e79c1f36a9a (patch)
tree785e8d77493c0eeac4ea94799daf24f75ad2016d /02_exercise/shell.c
parent41775b83ad93264b487bf0dc353b145922ee6d73 (diff)
downloadbetriebssysteme-589ec07d1ec29e9e33714fcc0f213e79c1f36a9a.tar.gz
betriebssysteme-589ec07d1ec29e9e33714fcc0f213e79c1f36a9a.zip
DO NOT MERGE, use previous. Trying to get ctrl-z to work.. no success yet, maybe breaks stufffixing_signals
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;