diff options
Diffstat (limited to 'Userland')
-rw-r--r-- | Userland/sleep.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/Userland/sleep.cpp b/Userland/sleep.cpp index 32dd646275..025a144300 100644 --- a/Userland/sleep.cpp +++ b/Userland/sleep.cpp @@ -30,8 +30,10 @@ #include <string.h> #include <unistd.h> +static bool g_interrupted; static void handle_sigint(int) { + g_interrupted = true; } int main(int argc, char** argv) @@ -47,7 +49,7 @@ int main(int argc, char** argv) sa.sa_handler = handle_sigint; sigaction(SIGINT, &sa, nullptr); - if (pledge("stdio", nullptr) < 0) { + if (pledge("stdio sigaction", nullptr) < 0) { perror("pledge"); return 1; } @@ -56,5 +58,11 @@ int main(int argc, char** argv) if (remaining) { printf("Sleep interrupted with %u seconds remaining.\n", remaining); } + + if (g_interrupted) { + signal(SIGINT, SIG_DFL); + raise(SIGINT); + } + return 0; } |