posix_spawn(): close the pipe read fd in the parent.

* also enable close-on-exec for the eventually dupped pipe write fd in the child.
This commit is contained in:
Jérôme Duval 2017-11-03 23:03:06 +01:00
parent 5623698f55
commit 04dabcfdf3
1 changed files with 2 additions and 0 deletions

View File

@ -387,6 +387,7 @@ process_file_actions(const posix_spawn_file_actions_t *_actions, int *errfd)
if (newfd == -1)
return errno;
close(action->fd);
fcntl(newfd, F_SETFD, FD_CLOEXEC);
*errfd = newfd;
}
@ -443,6 +444,7 @@ do_posix_spawn(pid_t *_pid, const char *path,
read(fds[0], &err, sizeof(err));
if (err != 0)
waitpid(pid, NULL, WNOHANG);
close(fds[0]);
return err;
}