pkill: add -e to display the name and PID of the process being killed
This mimics the behaviour of pkill -e / --echo from procps. function old new delta .rodata 105179 105200 +21 packed_usage 34523 34516 -7 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/1 up/down: 21/-7) Total: 14 bytes Signed-off-by: Louis Sautier <sautier.louis@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
c8c1fcdba1
commit
707a7ef4c7
@ -44,7 +44,7 @@
|
|||||||
//usage: "\n -P Match parent process ID"
|
//usage: "\n -P Match parent process ID"
|
||||||
//usage:
|
//usage:
|
||||||
//usage:#define pkill_trivial_usage
|
//usage:#define pkill_trivial_usage
|
||||||
//usage: "[-l|-SIGNAL] [-xfvno] [-s SID|-P PPID|PATTERN]"
|
//usage: "[-l|-SIGNAL] [-xfvnoe] [-s SID|-P PPID|PATTERN]"
|
||||||
//usage:#define pkill_full_usage "\n\n"
|
//usage:#define pkill_full_usage "\n\n"
|
||||||
//usage: "Send signal to processes selected by regex PATTERN\n"
|
//usage: "Send signal to processes selected by regex PATTERN\n"
|
||||||
//usage: "\n -l List all signals"
|
//usage: "\n -l List all signals"
|
||||||
@ -55,6 +55,7 @@
|
|||||||
//usage: "\n -v Negate the match"
|
//usage: "\n -v Negate the match"
|
||||||
//usage: "\n -n Signal the newest process only"
|
//usage: "\n -n Signal the newest process only"
|
||||||
//usage: "\n -o Signal the oldest process only"
|
//usage: "\n -o Signal the oldest process only"
|
||||||
|
//usage: "\n -e Display name and PID of the process being killed"
|
||||||
|
|
||||||
#include "libbb.h"
|
#include "libbb.h"
|
||||||
#include "xregex.h"
|
#include "xregex.h"
|
||||||
@ -64,7 +65,7 @@
|
|||||||
#define pkill (ENABLE_PKILL && (!ENABLE_PGREP || applet_name[1] == 'k'))
|
#define pkill (ENABLE_PKILL && (!ENABLE_PGREP || applet_name[1] == 'k'))
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
/* "vlafxons:+P:+" */
|
/* "vlafxones:+P:+" */
|
||||||
OPTBIT_V = 0, /* must be first, we need OPT_INVERT = 0/1 */
|
OPTBIT_V = 0, /* must be first, we need OPT_INVERT = 0/1 */
|
||||||
OPTBIT_L,
|
OPTBIT_L,
|
||||||
OPTBIT_A,
|
OPTBIT_A,
|
||||||
@ -72,6 +73,7 @@ enum {
|
|||||||
OPTBIT_X,
|
OPTBIT_X,
|
||||||
OPTBIT_O,
|
OPTBIT_O,
|
||||||
OPTBIT_N,
|
OPTBIT_N,
|
||||||
|
OPTBIT_E, /* should be pkill-only, do we care? */
|
||||||
OPTBIT_S,
|
OPTBIT_S,
|
||||||
OPTBIT_P,
|
OPTBIT_P,
|
||||||
};
|
};
|
||||||
@ -83,6 +85,7 @@ enum {
|
|||||||
#define OPT_ANCHOR (opt & (1 << OPTBIT_X))
|
#define OPT_ANCHOR (opt & (1 << OPTBIT_X))
|
||||||
#define OPT_FIRST (opt & (1 << OPTBIT_O))
|
#define OPT_FIRST (opt & (1 << OPTBIT_O))
|
||||||
#define OPT_LAST (opt & (1 << OPTBIT_N))
|
#define OPT_LAST (opt & (1 << OPTBIT_N))
|
||||||
|
#define OPT_ECHO (opt & (1 << OPTBIT_E))
|
||||||
#define OPT_SID (opt & (1 << OPTBIT_S))
|
#define OPT_SID (opt & (1 << OPTBIT_S))
|
||||||
#define OPT_PPID (opt & (1 << OPTBIT_P))
|
#define OPT_PPID (opt & (1 << OPTBIT_P))
|
||||||
|
|
||||||
@ -93,8 +96,12 @@ static void act(unsigned pid, char *cmd, int signo)
|
|||||||
printf("%u %s\n", pid, cmd);
|
printf("%u %s\n", pid, cmd);
|
||||||
else
|
else
|
||||||
printf("%u\n", pid);
|
printf("%u\n", pid);
|
||||||
} else
|
} else {
|
||||||
kill(pid, signo);
|
kill(pid, signo);
|
||||||
|
if (option_mask32 & (1 << OPTBIT_E)) {
|
||||||
|
printf("%s killed (pid %u)\n", cmd, pid);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int pgrep_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
int pgrep_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
|
||||||
@ -131,7 +138,7 @@ int pgrep_main(int argc UNUSED_PARAM, char **argv)
|
|||||||
/* Parse remaining options */
|
/* Parse remaining options */
|
||||||
ppid2match = -1;
|
ppid2match = -1;
|
||||||
sid2match = -1;
|
sid2match = -1;
|
||||||
opt = getopt32(argv, "vlafxons:+P:+", &sid2match, &ppid2match);
|
opt = getopt32(argv, "vlafxones:+P:+", &sid2match, &ppid2match);
|
||||||
argv += optind;
|
argv += optind;
|
||||||
|
|
||||||
if (pkill && OPT_LIST) { /* -l: print the whole signal list */
|
if (pkill && OPT_LIST) { /* -l: print the whole signal list */
|
||||||
|
Loading…
Reference in New Issue
Block a user