diff options
author | Dmitry V. Levin <ldv@altlinux.org> | 2012-07-12 20:54:46 +0000 |
---|---|---|
committer | Dmitry V. Levin <ldv@altlinux.org> | 2012-07-12 20:54:46 +0000 |
commit | cf53436f737c0273028503186fc0f837c7191085 (patch) | |
tree | 9ca6009d02b982d45bf40522a165071e631e8922 | |
parent | 26bc0606d96d05d30ba263939a0451889340a64c (diff) | |
download | strace-cf53436f737c0273028503186fc0f837c7191085.tar.gz |
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.
-rw-r--r-- | strace.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -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}; |