tput(1) manpage, add -b buflen option, exit status
This commit is contained in:
parent
acce478d8e
commit
7c197c8e73
2 changed files with 65 additions and 9 deletions
39
sys/man/1/tput
Normal file
39
sys/man/1/tput
Normal file
|
@ -0,0 +1,39 @@
|
|||
.TH TPUT 1
|
||||
.SH NAME
|
||||
tput \- measure read throughput
|
||||
.SH SYNOPSIS
|
||||
.B tput
|
||||
[
|
||||
.B -b
|
||||
.I buflen
|
||||
] [
|
||||
.B -p
|
||||
]
|
||||
.SH DESCRIPTION
|
||||
.I Tput
|
||||
continuously reads standard input writing throughput statistics
|
||||
to standard error. The throughput value is calculated and written
|
||||
once per second and automatically scaled to kilo-, mega- or gigabytes.
|
||||
.PP
|
||||
When the
|
||||
.B -p
|
||||
flag is specified,
|
||||
.I tput
|
||||
will write the data read to standard output (the default is to
|
||||
discard the data).
|
||||
.PP
|
||||
A read blocksize (default is 8192) in bytes can be given with the
|
||||
.B -b
|
||||
.I buflen
|
||||
option.
|
||||
.SH EXAMPLE
|
||||
.EX
|
||||
tput </dev/zero
|
||||
.EE
|
||||
.SH SOURCE
|
||||
.B /sys/src/cmd/tput.c
|
||||
.SH SEE ALSO
|
||||
.IR iostats (4)
|
||||
.SH DIAGNOSTICS
|
||||
.I Tput
|
||||
sets error status on read error.
|
|
@ -1,23 +1,41 @@
|
|||
#include <u.h>
|
||||
#include <libc.h>
|
||||
|
||||
enum {buflen = 4096};
|
||||
int dopipe;
|
||||
int buflen = 8192;
|
||||
uvlong bc, sec;
|
||||
|
||||
void
|
||||
usage(void)
|
||||
{
|
||||
fprint(2, "usage: %s [-b buflen] [-p]\n", argv0);
|
||||
exits("usage");
|
||||
}
|
||||
|
||||
void
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
int rc, cpid, fd, dopipe;
|
||||
static char buf[buflen];
|
||||
static uvlong bc, sec;
|
||||
double speed;
|
||||
int rc, cpid;
|
||||
char *buf;
|
||||
|
||||
dopipe = 0;
|
||||
ARGBEGIN {
|
||||
case 'p': dopipe = 1;
|
||||
case 'b':
|
||||
buflen = atoi(EARGF(usage()));
|
||||
break;
|
||||
case 'p':
|
||||
dopipe = 1;
|
||||
break;
|
||||
default:
|
||||
usage();
|
||||
} ARGEND
|
||||
|
||||
if(argc != 0)
|
||||
usage();
|
||||
|
||||
bc = 0;
|
||||
sec = 0;
|
||||
buf = sbrk(buflen);
|
||||
cpid = rfork(RFPROC | RFMEM);
|
||||
if(cpid == 0) {
|
||||
while(1) {
|
||||
|
@ -35,8 +53,7 @@ main(int argc, char **argv)
|
|||
if(dopipe) write(1, buf, rc);
|
||||
bc += rc;
|
||||
}
|
||||
sprint(buf, "/proc/%d/note", cpid);
|
||||
fd = open(buf, OWRITE);
|
||||
write(fd, "kill", 4);
|
||||
postnote(PNPROC, cpid, "kill");
|
||||
if(rc < 0) sysfatal("%r");
|
||||
exits(0);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue