Fix controlling terminal not being set on BSD

Fixes #764
This commit is contained in:
Kovid Goyal 2018-07-29 13:48:14 +05:30
parent 1cf6f28fe8
commit 892637683c
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -79,6 +79,10 @@ spawn(PyObject *self UNUSED, PyObject *args) {
// Establish the controlling terminal (see man 7 credentials)
int tfd = open(name, O_RDWR);
if (tfd == -1) exit_on_err("Failed to open controlling terminal");
#ifdef TIOCSTTY
// On BSD open() does not establish the controlling terminal
if (ioctl(tfd, TIOCSCTTY, 0) == -1) exit_on_err("Failed to set controlling terminal with TIOCSCTTY");
#endif
close(tfd);
environ = env;