diff options
author | Christopher Faylor <me@cgf.cx> | 2002-08-18 05:49:26 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2002-08-18 05:49:26 +0000 |
commit | 8dca9e230217cc6f4ded94e5fa0ab3f63df941b9 (patch) | |
tree | 7eae73aeb5feb07bfb241edbd41134270d9867a5 /winsup/cygwin/dcrt0.cc | |
parent | d17ba05c1c9dbb15b846682fd98e65b80260623d (diff) | |
download | newlib-8dca9e230217cc6f4ded94e5fa0ab3f63df941b9.zip newlib-8dca9e230217cc6f4ded94e5fa0ab3f63df941b9.tar.gz newlib-8dca9e230217cc6f4ded94e5fa0ab3f63df941b9.tar.bz2 |
* perthread.h (vfork_save): Add ctty, sid, pgid, exitval fields.
(vfork_save::restore_pid): New method.
(vfork_save::restore_exit): New method.
* fork.cc (vfork): Save ctty, sid, pgid and restore them when returning to
"parent". Use exitval field if exiting but never created a new process.
* syscalls.cc (setsid): Detect when in "vfork" and force an actual fork so that
pid will be allocated (UGLY!).
(getsid): New function.
* dcrt0.cc (do_exit): Use vfork_save::restore_exit method for returning from a
vfork.
* spawn.cc (spawnve): Use vfork_save::{restore_pid,restore_exit} methods for
returning from vfork.
* cygwin.din: Export getsid.
* include/cygwin/version.h: Bump api minor number.
* malloc.cc: #ifdef sYSTRIm for when MORECORE_CANNOT_TRIM is true.
Diffstat (limited to 'winsup/cygwin/dcrt0.cc')
-rw-r--r-- | winsup/cygwin/dcrt0.cc | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc index ac2c7e0..0384275 100644 --- a/winsup/cygwin/dcrt0.cc +++ b/winsup/cygwin/dcrt0.cc @@ -961,10 +961,7 @@ do_exit (int status) vfork_save *vf = vfork_storage.val (); if (vf != NULL && vf->pid < 0) - { - vf->pid = status < 0 ? status : -status; - longjmp (vf->j, 1); - } + vf->restore_exit (status); if (exit_state < ES_SIGNAL) { |