1436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#include <signal.h> 2436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#include <stdio.h> 3436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#include <stdlib.h> 4436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#include <string.h> 5436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#include <unistd.h> 6436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 7436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovint 8436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovmain (int argc, char **argv) 9436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov{ 10436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov fprintf(stderr, "starting ...\n"); 11436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 12436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov // Three ways of going away... 13436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov if (argc > 1) 14436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov { 15436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov // Explicit exit() with exit code. 16436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov if (strcmp (argv[1], "exit") == 0) 17436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov { 18436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov fprintf(stderr, "exiting ...\n"); 19436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov exit (1); 20436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov } 21436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 22436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov // Get killed by a signal. 23436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov if (strcmp (argv[1], "abort") == 0) 24436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov { 25436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov fprintf(stderr, "aborting ...\n"); 26436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov kill(getpid(), SIGABRT); 27436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov } 28436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov } 29436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 30436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov // And finally, just return from main with success. 31436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov fprintf(stderr, "returning ...\n"); 32436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov return 0; 33436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov} 34