Mark stdin as nonblocking if we get EWOULDBLOCK, and before handing it off to child processes when either starting them or moving them to the foreground.

https://github.com/fish-shell/fish-shell/issues/176
This commit is contained in:
ridiculousfish
2013-04-07 12:40:08 -07:00
parent 3a7ab3f030
commit 437b4397b9
10 changed files with 77 additions and 54 deletions

View File

@@ -578,7 +578,7 @@ static int get_socket(void)
goto unlock;
}
if (fcntl(s, F_SETFL, O_NONBLOCK) != 0)
if (make_fd_nonblocking(s) != 0)
{
wperror(L"fcntl");
close(s);
@@ -988,7 +988,7 @@ int main(int argc, char ** argv)
{
debug(4, L"Connected with new child on fd %d", child_socket);
if (fcntl(child_socket, F_SETFL, O_NONBLOCK) != 0)
if (make_fd_nonblocking(child_socket) != 0)
{
wperror(L"fcntl");
close(child_socket);