* signal.cc (_pinfo::kill): Return success on kill(0) only if pid exists or is

in PID_EXITED state.  Report pid 0 when pid does not exist rather than pid -1.
Make debug output reflect actual function call.
* sigproc.cc (stopped_or_terminated): Set process state to reaped when we've
finished waiting for it.
* include/sys/cygwin.h (PID_REAPED): New enum.
This commit is contained in:
Christopher Faylor
2011-05-05 00:31:22 +00:00
parent 942945956c
commit 5069a2b0d9
4 changed files with 16 additions and 5 deletions

View File

@@ -250,7 +250,7 @@ _pinfo::kill (siginfo_t& si)
}
this_pid = pid;
}
else if (si.si_signo == 0 && this)
else if (si.si_signo == 0 && this && process_state == PID_EXITED)
{
this_process_state = process_state;
this_pid = pid;
@@ -260,12 +260,12 @@ _pinfo::kill (siginfo_t& si)
{
set_errno (ESRCH);
this_process_state = 0;
this_pid = -1;
this_pid = 0;
res = -1;
}
syscall_printf ("%d = _pinfo::kill (%d, %d), process_state %p", res, this_pid,
si.si_signo, this_process_state);
syscall_printf ("%d = _pinfo::kill (%d), pid %d, process_state %p", res,
si.si_signo, this_pid, this_process_state);
return res;
}