diff --git a/README.md b/README.md index 4faba3b..7ee759c 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ dymanic ELF binary is 18Kb, static (gcc -Wall -g --static -o zombie zombie.c) You can find statically compiled binary in Releases page. ## Usage: -Accepts one argument (int), sleep time. Default value is 30. +Accepts one argument (int), sleep time. Default value is 0 (sleep forever). ~~~ $ ./zombie 50 diff --git a/zombie.c b/zombie.c index c77ca61..6718833 100644 --- a/zombie.c +++ b/zombie.c @@ -3,25 +3,32 @@ #include #include -char *version = "0.0.1"; +char *version = "0.0.2"; int main(int argc, char **argv) { pid_t pid = fork(); // Create a new child process - int sleeptime = 30; + int sleeptime = -1; if(argc > 1){ sleeptime = atoi(argv[1]); } if(sleeptime == 0){ - sleeptime = 30; + sleeptime = -1; } if (pid > 0) { // Parent process: Just sleep, don't call wait(). printf("Parent process (PID: %d) is running, child (PID: %d) will become a zombie.\n", getpid(), pid); - printf("Sleep %d seconds...\n", sleeptime); + if(sleeptime>0){ + printf("Sleep %d seconds...\n", sleeptime); + }else{ + printf("Sleep forever...\n"); + while(1){ + sleep(86400); + } + } sleep(sleeptime); // Keep the parent alive to allow time for observing the zombie process } else if (pid == 0) { // Child process: Exit immediately, becomes a zombie