summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Jenkins <alan.christopher.jenkins@gmail.com>2017-10-30 16:10:37 +0000
committerAlan Jenkins <alan.christopher.jenkins@gmail.com>2017-10-30 16:10:37 +0000
commit3448a9698025844b0ddca6e4638b720b13180ffc (patch)
treeda6c97c534d0d6201edbd7c059d959afbcabc214
parent27b8198e132b3763d8a18ddf4ef2ef0713e849f6 (diff)
downloadsystemd-3448a9698025844b0ddca6e4638b720b13180ffc.tar.gz
systemd-3448a9698025844b0ddca6e4638b720b13180ffc.tar.bz2
systemd-3448a9698025844b0ddca6e4638b720b13180ffc.zip
core: remove "misuse" of getpgid() in systemd-shutdown
Using `kill()` with a signal of 0 is a slightly more documented idiom for checking whether a process still exists. It is mentioned explicitly in man pages. This avoids the need to comment the call as "misuse". A comment is still necessary - in fact this idiom is even more confusing if you don't know how it works. But it's easy enough to explain.
-rw-r--r--src/core/killall.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/core/killall.c b/src/core/killall.c
index 5e914e478d..fe5320e813 100644
--- a/src/core/killall.c
+++ b/src/core/killall.c
@@ -129,9 +129,9 @@ static void wait_for_children(Set *pids, sigset_t *mask) {
* might not be our child. */
SET_FOREACH(p, pids, i) {
- /* We misuse getpgid as a check whether a
- * process still exists. */
- if (getpgid(PTR_TO_PID(p)) >= 0)
+ /* kill(pid, 0) sends no signal, but it tells
+ * us whether the process still exists. */
+ if (kill(PTR_TO_PID(p), 0) == 0)
continue;
if (errno != ESRCH)