diff options
Diffstat (limited to 'procps/kill.c')
-rw-r--r-- | procps/kill.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/procps/kill.c b/procps/kill.c index b839b3819..ed659afdc 100644 --- a/procps/kill.c +++ b/procps/kill.c | |||
@@ -106,19 +106,19 @@ int kill_main(int argc, char **argv) | |||
106 | argc--; | 106 | argc--; |
107 | 107 | ||
108 | do_it_now: | 108 | do_it_now: |
109 | pid = getpid(); | ||
109 | 110 | ||
110 | if (killall5) { | 111 | if (killall5) { |
111 | pid_t sid; | 112 | pid_t sid; |
112 | procps_status_t* p = NULL; | 113 | procps_status_t* p = NULL; |
113 | 114 | ||
114 | /* Now stop all processes */ | ||
115 | kill(-1, SIGSTOP); | ||
116 | /* Find out our own session id */ | 115 | /* Find out our own session id */ |
117 | pid = getpid(); | ||
118 | sid = getsid(pid); | 116 | sid = getsid(pid); |
117 | /* Now stop all processes */ | ||
118 | kill(-1, SIGSTOP); | ||
119 | /* Now kill all processes except our session */ | 119 | /* Now kill all processes except our session */ |
120 | while ((p = procps_scan(p, PSSCAN_PID|PSSCAN_SID))) { | 120 | while ((p = procps_scan(p, PSSCAN_PID|PSSCAN_SID))) { |
121 | if (p->sid != sid && p->pid != pid && p->pid != 1) | 121 | if (p->sid != (unsigned)sid && p->pid != (unsigned)pid && p->pid != 1) |
122 | kill(p->pid, signo); | 122 | kill(p->pid, signo); |
123 | } | 123 | } |
124 | /* And let them continue */ | 124 | /* And let them continue */ |
@@ -134,7 +134,6 @@ do_it_now: | |||
134 | 134 | ||
135 | if (killall) { | 135 | if (killall) { |
136 | /* Looks like they want to do a killall. Do that */ | 136 | /* Looks like they want to do a killall. Do that */ |
137 | pid = getpid(); | ||
138 | while (arg) { | 137 | while (arg) { |
139 | pid_t* pidList; | 138 | pid_t* pidList; |
140 | 139 | ||