[systemd-devel] [PATCH 2/2] Add a 'b' option to cgtop, equivalent to the same option in top.
david at davidstrauss.net
david at davidstrauss.net
Wed Jul 25 16:33:07 PDT 2012
From: David Strauss <david at davidstrauss.net>
---
src/cgtop/cgtop.c | 30 +++++++++++++++++++++++-------
1 file changed, 23 insertions(+), 7 deletions(-)
diff --git a/src/cgtop/cgtop.c b/src/cgtop/cgtop.c
index 70570a8..b4454c54 100644
--- a/src/cgtop/cgtop.c
+++ b/src/cgtop/cgtop.c
@@ -66,6 +66,8 @@ static enum {
ORDER_IO
} arg_order = ORDER_CPU;
+bool arg_batch = false;
+
static void group_free(Group *g) {
assert(g);
@@ -507,6 +509,7 @@ static void help(void) {
" -i Order by IO load\n"
" -d --delay=DELAY Specify delay\n"
" -n --iterations=N Run for N iterations before exiting\n"
+ " -b --batch Run in batch mode, accepting no input\n"
" --depth=DEPTH Maximum traversal depth (default: 2)\n",
program_invocation_short_name);
}
@@ -521,6 +524,7 @@ static int parse_argv(int argc, char *argv[]) {
{ "help", no_argument, NULL, 'h' },
{ "delay", required_argument, NULL, 'd' },
{ "iterations", required_argument, NULL, 'n' },
+ { "batch", no_argument, NULL, 'b' },
{ "depth", required_argument, NULL, ARG_DEPTH },
{ NULL, 0, NULL, 0 }
};
@@ -531,7 +535,7 @@ static int parse_argv(int argc, char *argv[]) {
assert(argc >= 1);
assert(argv);
- while ((c = getopt_long(argc, argv, "hptcmin:d:", options, NULL)) >= 0) {
+ while ((c = getopt_long(argc, argv, "hptcmin:bd:", options, NULL)) >= 0) {
switch (c) {
@@ -566,6 +570,10 @@ static int parse_argv(int argc, char *argv[]) {
break;
+ case 'b':
+ arg_batch = true;
+ break;
+
case 'p':
arg_order = ORDER_PATH;
break;
@@ -656,17 +664,25 @@ int main(int argc, char *argv[]) {
if (arg_iterations && iteration >= arg_iterations)
break;
- r = read_one_char(stdin, &key, last_refresh + arg_delay - t, NULL);
- if (r == -ETIMEDOUT)
- continue;
- if (r < 0) {
- log_error("Couldn't read key: %s", strerror(-r));
- goto finish;
+ if (!arg_batch) {
+ r = read_one_char(stdin, &key, last_refresh + arg_delay - t, NULL);
+ if (r == -ETIMEDOUT)
+ continue;
+ if (r < 0) {
+ log_error("Couldn't read key: %s", strerror(-r));
+ goto finish;
+ }
+ }
+ else {
+ usleep(last_refresh + arg_delay - t);
}
fputs("\r \r", stdout);
fflush(stdout);
+ if (arg_batch)
+ continue;
+
switch (key) {
case ' ':
--
1.7.11.2
More information about the systemd-devel
mailing list