diff options
author | xSlendiX <gamingxslendix@gmail.com> | 2021-09-08 01:38:30 +0300 |
---|---|---|
committer | xSlendiX <gamingxslendix@gmail.com> | 2021-09-08 01:38:30 +0300 |
commit | af258658c18603a231e1cd4c0b933beb2ab1fd22 (patch) | |
tree | 35d2166bfca4a6ab333da3bb6b9c92d04b29c725 | |
parent | 7d2966b3f73cca5560b5aea1e47688190a22d8d3 (diff) |
Add more signal handlers
-rw-r--r-- | sus.c | 28 |
1 files changed, 27 insertions, 1 deletions
@@ -56,7 +56,23 @@ int main(int argc, char** argv) return 0; } - signal(SIGINT, intHandler); + struct sigaction savealrm, saveint, savehup, savequit, saveterm; + struct sigaction savetstp, savettin, savettou, savepipe; + + struct sigaction sa; + sigemptyset(&sa.sa_mask); + sa.sa_flags = 0; + sa.sa_handler = intHandler; + + sigaction(SIGALRM, &sa, &savealrm); + sigaction(SIGHUP, &sa, &savehup); + sigaction(SIGINT, &sa, &saveint); + sigaction(SIGPIPE, &sa, &savepipe); + sigaction(SIGQUIT, &sa, &savequit); + sigaction(SIGTERM, &sa, &saveterm); + sigaction(SIGTSTP, &sa, &savetstp); + sigaction(SIGTTIN, &sa, &savettin); + sigaction(SIGTTOU, &sa, &savettou); command_name = malloc((1 + strlen(argv[0])) * sizeof(char)); strcpy(command_name, argv[0]); @@ -112,6 +128,16 @@ int main(int argc, char** argv) return 1; } + sigaction(SIGALRM, &sa, NULL); + sigaction(SIGHUP, &sa, NULL); + sigaction(SIGINT, &sa, NULL); + sigaction(SIGPIPE, &sa, NULL); + sigaction(SIGQUIT, &sa, NULL); + sigaction(SIGTERM, &sa, NULL); + sigaction(SIGTSTP, &sa, NULL); + sigaction(SIGTTIN, &sa, NULL); + sigaction(SIGTTOU, &sa, NULL); + argv += command_start; setuid(uid); char* path = getenv("PATH"); |