Fix leakage of placeholder descriptors to tracees
Fix leakage of placeholder descriptors to tracees

As a side effect of commit v4.11-211-g0736d4e, strace used to leak
placeholders for standard descriptors to tracees thus affecting their
behaviour.  Fix this by setting close-on-exec flag on placeholder
descriptors.

* strace.c (open_dummy_desc): Set close-on-exec flag on the descriptor
that is going to be returned to the caller.
(fd_is_placeholder): New array.
(ensure_standard_fds_opened, redirect_standard_fds): New functions.
(startup_child): Use redirect_standard_fds.
(init): Use ensure_standard_fds_opened.

cuviper/strace,cuviper/strace,Saruta/strace,Saruta/strace,Saruta/strace,cuviper/strace,cuviper/strace,cuviper/strace,Saruta/strace,Saruta/strace