cgtop: more sensible flushing behavior w/ non-TTY output

- Explicitly flush stdout before sleep between iterations
- Only clear user keystrokes when output is to TTY
- Add a newline between output batches when output is not to TTY
This commit is contained in:
Charles Duffy 2015-05-27 17:30:11 -05:00
parent 780fe62eca
commit dcc7aacd67

View file

@ -749,6 +749,10 @@ int main(int argc, char *argv[]) {
if (arg_iterations && iteration >= arg_iterations)
break;
if (!on_tty()) /* non-TTY: Empty newline as delimiter between polls */
fputs("\n", stdout);
fflush(stdout);
if (arg_batch) {
usleep(last_refresh + arg_delay - t);
} else {
@ -762,8 +766,10 @@ int main(int argc, char *argv[]) {
}
}
fputs("\r \r", stdout);
fflush(stdout);
if (on_tty()) { /* TTY: Clear any user keystroke */
fputs("\r \r", stdout);
fflush(stdout);
}
if (arg_batch)
continue;