Commit 0ea1f2a3 authored by Noah Misch's avatar Noah Misch

Report success when Windows kill() emulation signals an exiting process.

This is consistent with the POSIX verdict that kill() shall not report
ESRCH for a zombie process.  Back-patch to 9.0 (all supported versions).
Test code from commit d7cdf6ee depends
on it, and log messages about kill() reporting "Invalid argument" will
cease to appear for this not-unexpected condition.
parent 31f9bbf0
...@@ -70,13 +70,28 @@ pgkill(int pid, int sig) ...@@ -70,13 +70,28 @@ pgkill(int pid, int sig)
return 0; return 0;
} }
if (GetLastError() == ERROR_FILE_NOT_FOUND) switch (GetLastError())
errno = ESRCH; {
else if (GetLastError() == ERROR_ACCESS_DENIED) case ERROR_BROKEN_PIPE:
errno = EPERM; case ERROR_BAD_PIPE:
else
errno = EINVAL; /*
return -1; * These arise transiently as a process is exiting. Treat them
* like POSIX treats a zombie process, reporting success.
*/
return 0;
case ERROR_FILE_NOT_FOUND:
/* pipe fully gone, so treat the process as gone */
errno = ESRCH;
return -1;
case ERROR_ACCESS_DENIED:
errno = EPERM;
return -1;
default:
errno = EINVAL; /* unexpected */
return -1;
}
} }
#endif #endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment