From: Rusty Russell Date: Sun, 29 Jun 2008 09:06:22 +0000 (+1000) Subject: Fork support. X-Git-Url: https://git.ozlabs.org/?p=ccan;a=commitdiff_plain;h=30d3e635ecef7961777a1aa98b1bde23712d6547 Fork support. --- diff --git a/ccan/tap/tap.c b/ccan/tap/tap.c index 4bbd977b..6e268324 100644 --- a/ccan/tap/tap.c +++ b/ccan/tap/tap.c @@ -28,6 +28,7 @@ #include #include #include +#include #include "tap.h" @@ -41,6 +42,7 @@ static char *todo_msg = NULL; static char *todo_msg_fixed = "libtap malloc issue"; static int todo = 0; static int test_died = 0; +static int test_pid; /* Encapsulate the pthread code in a conditional. In the absence of libpthread the code does nothing */ @@ -185,6 +187,9 @@ _gen_result(int ok, const char *func, char *file, unsigned int line, static void _cleanup(void) { + /* If we forked, don't do cleanup in child! */ + if (getpid() != test_pid) + return; LOCK; @@ -245,6 +250,7 @@ _tap_init(void) static int run_once = 0; if(!run_once) { + test_pid = getpid(); atexit(_cleanup); /* stdout needs to be unbuffered so that the output appears