From: Lennart Poettering Date: Tue, 27 Oct 2015 13:02:45 +0000 (+0100) Subject: process-util: make some minor corrections to PID live detection X-Git-Tag: v228.1~1^2~43 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=4060a1603b2e82e6086a13456139f306736571e8 process-util: make some minor corrections to PID live detection --- diff --git a/src/basic/process-util.c b/src/basic/process-util.c index 8a1f54db8..5825944c9 100644 --- a/src/basic/process-util.c +++ b/src/basic/process-util.c @@ -556,9 +556,12 @@ int getenv_for_pid(pid_t pid, const char *field, char **_value) { bool pid_is_unwaited(pid_t pid) { /* Checks whether a PID is still valid at all, including a zombie */ - if (pid <= 0) + if (pid < 0) return false; + if (pid <= 1) /* If we or PID 1 would be dead and have been waited for, this code would not be running */ + return true; + if (kill(pid, 0) >= 0) return true; @@ -570,9 +573,12 @@ bool pid_is_alive(pid_t pid) { /* Checks whether a PID is still valid and not a zombie */ - if (pid <= 0) + if (pid < 0) return false; + if (pid <= 1) /* If we or PID 1 would be a zombie, this code would not be running */ + return true; + r = get_process_state(pid); if (r == -ESRCH || r == 'Z') return false;