killall.c revision e1d758033dc7e101ab32323a0f1649d8daf56a22
0N/A/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ 0N/A This file is part of systemd. 0N/A Copyright 2010 ProFUSION embedded systems 0N/A systemd is free software; you can redistribute it and/or modify it 157N/A under the terms of the GNU Lesser General Public License as published by 0N/A the Free Software Foundation; either version 2.1 of the License, or 0N/A (at your option) any later version. 0N/A systemd is distributed in the hope that it will be useful, but 0N/A WITHOUT ANY WARRANTY; without even the implied warranty of 0N/A MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 0N/A Lesser General Public License for more details. 0N/A You should have received a copy of the GNU Lesser General Public License 0N/A /* We are PID 1, let's not commit suicide */ return true;
/* not really, but better safe than sorry */ /* Non-root processes otherwise are always subject to be killed */ return true;
/* not really, but has the desired effect */ /* Kernel threads have an empty cmdline */ /* Processes with argv[0][0] = '@' we ignore from the killing if (
count ==
1 && c ==
'@')
/* First, let the kernel inform us about killed * children. Most processes will probably be our * children, but some are not (might be our * grandchildren instead...). */ /* Now explicitly check who might be remaining, who * might not be our child. */ /* We misuse getpgid as a check whether a * process still exists. */ log_warning(
"sigtimedwait() returned unexpected signal.");
/* Optionally, also send a SIGHUP signal, but only if the process has a controlling tty. This is useful to allow handling of shells which ignore SIGTERM but react to SIGHUP. We do not send this to processes that have no controlling TTY since we don't want to trigger reloads of daemon processes. Also we make sure to only send this after SIGTERM so that SIGTERM is always first in the queue. */