--- sysvinit-2.86/src/killall5.c 2004-07-30 14:16:23.000000000 +0200 +++ b/src/killall5.c 2008-05-29 20:22:05.000000000 +0200 @@ -553,13 +553,20 @@ return(first ? 1 : 0); } +int getoid() +{ + char *s = getenv("KILLALL5_OMITPID"); + if (s == NULL) + return (int)getpid(); + return atoi(s); +} /* Main for either killall or pidof. */ int main(int argc, char **argv) { PROC *p; - int pid, sid = -1; + int pid, oid = 0, sid = -1; int sig = SIGKILL; /* Get program name. */ @@ -608,8 +615,9 @@ /* Now kill all processes except our session. */ sid = (int)getsid(0); pid = (int)getpid(); + oid = getoid(); for (p = plist; p; p = p->next) - if (p->pid != pid && p->sid != sid && !p->kernel) + if (p->pid != oid && p->pid != pid && p->sid != sid && !p->kernel) kill(p->pid, sig); /* And let them continue. */