diff --git a/websh.c b/websh.c index d17c114..2cfd1d5 100644 --- a/websh.c +++ b/websh.c @@ -24,6 +24,13 @@ static int sFlag = 0; static const char *word; static const char *tag; +volatile sig_atomic_t quit = 0; + +static void handle_signal(int signal) +{ + quit = 1; +} + void usage(void) { fprintf(stderr, "Usage: websh [-e] [-h] [-s WORD:TAG]\n"); @@ -92,6 +99,14 @@ void parse(int argc, char *argv[]) int main(int argc, char *argv[]) { parse(argc, argv); + + struct sigaction sa; + memset(&sa, 0, sizeof(sa)); + sa.sa_handler = handle_signal; + sigaction(SIGINT, &sa, NULL); + sigaction(SIGTERM, &sa, NULL); + + return 0; }