job-control: set CLOEXEC on pty processes. #5986

Before this change, new processes started with libuv prevented SIGHUP
from reaching pty processes (by keeping the ptmx file descriptor open).
This commit is contained in:
Matthew Malcomson
2017-01-21 14:11:30 +00:00
committed by Justin M. Keyes
parent ad1884be0d
commit f6946c68ae
7 changed files with 77 additions and 35 deletions

View File

@@ -1742,16 +1742,11 @@ failed:
}
# endif
if (!read_buffer && !read_stdin)
close(fd); /* errors are ignored */
#ifdef HAVE_FD_CLOEXEC
else {
int fdflags = fcntl(fd, F_GETFD);
if (fdflags >= 0 && (fdflags & FD_CLOEXEC) == 0) {
(void)fcntl(fd, F_SETFD, fdflags | FD_CLOEXEC);
}
if (!read_buffer && !read_stdin) {
close(fd); // errors are ignored
} else {
(void)os_set_cloexec(fd);
}
#endif
xfree(buffer);
if (read_stdin) {