From 3befa5c799c0d396f579696e59d39c15f99a20ab Mon Sep 17 00:00:00 2001 From: "wtc%netscape.com" Date: Fri, 12 Feb 1999 18:48:42 +0000 Subject: Make sure the redirected standard I/O fd's are blocking so that libc's stdio.h functions can work. --- pr/src/md/unix/uxproces.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pr/src/md/unix/uxproces.c b/pr/src/md/unix/uxproces.c index 6b1d4110..3ae0f5a1 100644 --- a/pr/src/md/unix/uxproces.c +++ b/pr/src/md/unix/uxproces.c @@ -145,6 +145,7 @@ ForkAndExec( int nEnv, idx; char *const *childEnvp; char **newEnvp = NULL; + int flags; process = PR_NEW(PRProcess); if (!process) { @@ -200,6 +201,10 @@ ForkAndExec( _exit(1); /* failed */ } close(attr->stdinFd->secret->md.osfd); + flags = fcntl(0, F_GETFL, 0); + if (flags & O_NONBLOCK) { + fcntl(0, F_SETFL, flags & ~O_NONBLOCK); + } } if (attr->stdoutFd && attr->stdoutFd->secret->md.osfd != 1) { @@ -207,6 +212,10 @@ ForkAndExec( _exit(1); /* failed */ } close(attr->stdoutFd->secret->md.osfd); + flags = fcntl(1, F_GETFL, 0); + if (flags & O_NONBLOCK) { + fcntl(1, F_SETFL, flags & ~O_NONBLOCK); + } } if (attr->stderrFd && attr->stderrFd->secret->md.osfd != 2) { @@ -214,6 +223,10 @@ ForkAndExec( _exit(1); /* failed */ } close(attr->stderrFd->secret->md.osfd); + flags = fcntl(2, F_GETFL, 0); + if (flags & O_NONBLOCK) { + fcntl(2, F_SETFL, flags & ~O_NONBLOCK); + } } if (attr->currentDirectory) { if (chdir(attr->currentDirectory) < 0) { -- cgit v1.2.1