/** * unkillable.c * * Demonstrates blocking signals (SIGINT and SIGTERM). Run this program and try * killing it with Ctrl+C (^C) or running kill . * * Compile: gcc -g -Wall unkillable.c -o unkillable * Run: ./unkillable */ #include #include #include #include #include int main(void) { signal(SIGTERM, SIG_IGN); signal(SIGINT, SIG_IGN); while (true) { puts("I'm just a process\n"); sleep(1); puts("Running till the end of time\n"); sleep(1); puts("I'm just a process\n"); sleep(1); puts("Got nothin' on my mind\n"); sleep(1); puts("Please don't you kill me\n"); sleep(1); puts("Don't press control and C\n"); sleep(1); puts("Darlin' believe me\n"); sleep(1); puts("A process is all that I can be\n"); sleep(1); puts("I'm just a process\n"); sleep(1); puts("I've got some hopes and dreams\n"); sleep(1); puts("I'm just a process\n"); sleep(1); puts("My functionality more than it seems\n"); sleep(1); puts("Think of my children, don't you know it's wrong?\n"); sleep(1); puts("My thread of execution running for so long\n"); sleep(1); puts("If you kill me, it'll also kill this song\n"); sleep(1); puts("Yeah if you kill me, it'll also kill this song\n"); sleep(1); puts("This process life\n"); sleep(1); puts("I never wanted to be a part of it\n"); sleep(1); puts("Okay that's enough!\n"); sleep(1); puts("Control + backslash sends SIGQUIT.\n"); sleep(1); puts("\n"); } return 0; }