From: Dmitry V. Levin Date: Thu, 12 Jul 2012 20:54:46 +0000 (+0000) Subject: Close pipe and wait for the pipe process termination X-Git-Tag: v4.8~221 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;ds=sidebyside;h=cf53436f737c0273028503186fc0f837c7191085;p=strace Close pipe and wait for the pipe process termination In case of normal strace termination, when the trace output is redirected to a file or a pipe, close it and wait for the pipe process termination. * strace.c (main): Before normal exit, close shared_log when it differs from stderr, and wait for popen_pid termination. --- diff --git a/strace.c b/strace.c index e6d6d687..799fce51 100644 --- a/strace.c +++ b/strace.c @@ -2214,6 +2214,12 @@ main(int argc, char *argv[]) cleanup(); fflush(NULL); + if (shared_log != stderr) + fclose(shared_log); + if (popen_pid) { + while (waitpid(popen_pid, NULL, 0) < 0 && errno == EINTR) + ; + } if (exit_code > 0xff) { /* Avoid potential core file clobbering. */ struct rlimit rlim = {0, 0};