1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* process.c (rb_syswait): thread kludge; should be fixed to

support native thread.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_6@2129 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
matz 2002-02-25 09:18:09 +00:00
parent 8f800a2452
commit fb31afc5a2
4 changed files with 34 additions and 22 deletions

View file

@ -588,29 +588,36 @@ void
rb_syswait(pid)
int pid;
{
static int overriding;
RETSIGTYPE (*hfunc)_((int)), (*qfunc)_((int)), (*ifunc)_((int));
int status;
int i;
int i, hooked = Qfalse;
if (!overriding) {
#ifdef SIGHUP
hfunc = signal(SIGHUP, SIG_IGN);
hfunc = signal(SIGHUP, SIG_IGN);
#endif
#ifdef SIGQUIT
qfunc = signal(SIGQUIT, SIG_IGN);
qfunc = signal(SIGQUIT, SIG_IGN);
#endif
ifunc = signal(SIGINT, SIG_IGN);
ifunc = signal(SIGINT, SIG_IGN);
overriding = Qtrue;
hooked = Qtrue;
}
do {
i = rb_waitpid(pid, 0, &status);
i = rb_waitpid(pid, &status, 0);
} while (i == -1 && errno == EINTR);
if (hooked) {
#ifdef SIGHUP
signal(SIGHUP, hfunc);
signal(SIGHUP, hfunc);
#endif
#ifdef SIGQUIT
signal(SIGQUIT, qfunc);
signal(SIGQUIT, qfunc);
#endif
signal(SIGINT, ifunc);
signal(SIGINT, ifunc);
}
}
static VALUE