This matches killall5 from sysvinit. From its manpage:

EXIT STATUS
       The program return zero if it killed processes. It return 2 if
       no process were killed, and 1 if it was unable to find any 
       processes (/proc/ is missing).

For this to work kernel processes need to be filtered out, this patch 
does that as well


diff -ur busybox.orig/procps/kill.c busybox/procps/kill.c
--- busybox.orig/procps/kill.c  2012-07-18 17:32:32.000000000 +0200
+++ busybox/procps/kill.c       2012-08-12 15:11:35.792678564 +0200
@@ -158,7 +158,7 @@
        if (killall5) {
                pid_t sid;
                procps_status_t* p = NULL;
-               int ret = 0;
+               int ret = 2;
 
                /* Find out our session id */
                sid = getsid(pid);
@@ -172,6 +172,7 @@
                        if (p->sid == (unsigned)sid
                         || p->pid == (unsigned)pid
                         || p->pid == 1
+                        || p->sid == 0
                        ) {
                                continue;
                        }
@@ -200,6 +201,7 @@
                                        goto dont_kill;
                        }
                        kill(p->pid, signo);
+                       ret = 0;
  dont_kill: ;
                }
  resume:

_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to