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.
This commit is contained in:
Дмитрий Левин 2012-07-12 20:54:46 +00:00
parent 26bc0606d9
commit cf53436f73

View File

@ -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};