aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--procps/kill.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/procps/kill.c b/procps/kill.c
index cd189bcd6..8e4213730 100644
--- a/procps/kill.c
+++ b/procps/kill.c
@@ -158,7 +158,8 @@ int kill_main(int argc, char **argv)
158 if (killall5) { 158 if (killall5) {
159 pid_t sid; 159 pid_t sid;
160 procps_status_t* p = NULL; 160 procps_status_t* p = NULL;
161 int ret = 0; 161 /* compat: exitcode 2 is "no one was signaled" */
162 int ret = 2;
162 163
163 /* Find out our session id */ 164 /* Find out our session id */
164 sid = getsid(pid); 165 sid = getsid(pid);
@@ -170,6 +171,7 @@ int kill_main(int argc, char **argv)
170 int i; 171 int i;
171 172
172 if (p->sid == (unsigned)sid 173 if (p->sid == (unsigned)sid
174 || p->sid == 0 /* compat: kernel thread, don't signal it */
173 || p->pid == (unsigned)pid 175 || p->pid == (unsigned)pid
174 || p->pid == 1 176 || p->pid == 1
175 ) { 177 ) {
@@ -200,6 +202,7 @@ int kill_main(int argc, char **argv)
200 goto dont_kill; 202 goto dont_kill;
201 } 203 }
202 kill(p->pid, signo); 204 kill(p->pid, signo);
205 ret = 0;
203 dont_kill: ; 206 dont_kill: ;
204 } 207 }
205 resume: 208 resume: