diff options
Diffstat (limited to 'kill.c')
-rw-r--r-- | kill.c | 16 |
1 files changed, 11 insertions, 5 deletions
@@ -224,12 +224,18 @@ extern int kill_main(int argc, char **argv) | |||
224 | else { | 224 | else { |
225 | /* Looks like they want to do a killall. Do that */ | 225 | /* Looks like they want to do a killall. Do that */ |
226 | while (--argc >= 0) { | 226 | while (--argc >= 0) { |
227 | int pid; | 227 | pid_t* pidList; |
228 | 228 | ||
229 | while((pid = findPidByName( *argv))) { | 229 | pidList = findPidByName( *argv); |
230 | if (kill(pid, sig) != 0) | 230 | for(; pidList && pidList!=0; pidList++) { |
231 | fatalError( "Could not kill pid '%d': %s\n", pid, strerror(errno)); | 231 | if (kill(*pidList, sig) != 0) |
232 | fatalError( "Could not kill pid '%d': %s\n", *pidList, strerror(errno)); | ||
233 | else | ||
234 | errorMsg( "killed pid '%d'\n", *pidList); | ||
232 | } | 235 | } |
236 | /* Note that we don't bother to free the memory | ||
237 | * allocated in findPidByName(). It will be freed | ||
238 | * upon exit, so we can save a byte or two */ | ||
233 | argv++; | 239 | argv++; |
234 | } | 240 | } |
235 | } | 241 | } |