X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/5908a577e3ddbe4c467af0936bd4ce4b16bffd99..b15948e6710cd1d7cc29b661591ac18c2de4cbd2:/test/fakepop.c diff --git a/test/fakepop.c b/test/fakepop.c index 7ff62a8b..bca565d1 100644 --- a/test/fakepop.c +++ b/test/fakepop.c @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -36,6 +37,8 @@ continue; \ } +static void killpidfile(void); +static void handleterm(int); static void putpop(int, char *); static void putpopbulk(int, char *); static int getpop(int, char *, ssize_t); @@ -183,6 +186,9 @@ main(int argc, char *argv[]) fprintf(pid, "%ld\n", (long) getpid()); fclose(pid); + signal(SIGTERM, handleterm); + atexit(killpidfile); + FD_ZERO(&readfd); FD_SET(l, &readfd); @@ -412,3 +418,27 @@ readmessage(FILE *file) return buffer; } + +/* + * Handle a SIGTERM + */ + +static void +handleterm(int signal) +{ + (void) signal; + + killpidfile(); + fflush(NULL); + _exit(1); +} + +/* + * Get rid of our pid file + */ + +static void +killpidfile(void) +{ + unlink(PIDFILE); +}