diff options
author | Christopher Faylor <me@cgf.cx> | 2001-09-29 01:23:06 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2001-09-29 01:23:06 +0000 |
commit | a1dc0932f42604d6bd51ebf13f668e8e6debf409 (patch) | |
tree | 72da95ada5c8d6b1956697021dfff362e4e64351 /winsup/cygwin/pipe.cc | |
parent | e19332c6677f4e1a41387102ded9010a2b99229f (diff) | |
download | cygnal-a1dc0932f42604d6bd51ebf13f668e8e6debf409.tar.gz cygnal-a1dc0932f42604d6bd51ebf13f668e8e6debf409.tar.bz2 cygnal-a1dc0932f42604d6bd51ebf13f668e8e6debf409.zip |
* pipe.cc (fhandler_pipe::fixup_after_fork): New method.
* fhandler.h (fhandler_pipe::fixup_after_fork): Declare new method.
Diffstat (limited to 'winsup/cygwin/pipe.cc')
-rw-r--r-- | winsup/cygwin/pipe.cc | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/winsup/cygwin/pipe.cc b/winsup/cygwin/pipe.cc index 1166b511d..03af86228 100644 --- a/winsup/cygwin/pipe.cc +++ b/winsup/cygwin/pipe.cc @@ -63,9 +63,7 @@ int fhandler_pipe::close () if (guard) CloseHandle (guard); if (writepipe_exists) -{debug_printf ("writepipe_exists closed"); CloseHandle (writepipe_exists); -} return res; } @@ -83,6 +81,16 @@ fhandler_pipe::hit_eof () return ev == NULL; } +void +fhandler_pipe::fixup_after_fork (HANDLE parent) +{ + this->fhandler_base::fixup_after_fork (parent); + if (guard) + fork_fixup (parent, guard, "guard"); + if (writepipe_exists) + fork_fixup (parent, writepipe_exists, "guard"); +} + int fhandler_pipe::dup (fhandler_base *child) { @@ -96,14 +104,20 @@ fhandler_pipe::dup (fhandler_base *child) ftp->guard = NULL; else if (!DuplicateHandle (hMainProc, guard, hMainProc, &ftp->guard, 0, 1, DUPLICATE_SAME_ACCESS)) - return -1; + { + debug_printf ("couldn't duplicate guard %p, %E", guard); + return -1; + } if (writepipe_exists == NULL) ftp->writepipe_exists = NULL; else if (!DuplicateHandle (hMainProc, writepipe_exists, hMainProc, &ftp->writepipe_exists, 0, 1, DUPLICATE_SAME_ACCESS)) - return -1; + { + debug_printf ("couldn't duplicate writepipe_exists %p, %E", writepipe_exists); + return -1; + } ftp->id = id; ftp->orig_pid = orig_pid; |