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