Pipe Viewer tiene esta función.
cat /dev/urandom | pv -L 3k | foo
Diría que Juliano tiene la respuesta correcta si tiene esa herramienta, pero también sugeriría que este es un pequeño ejercicio de estilo K&R:simplemente escriba una versión especializada de cat que lea un carácter a la vez desde stdin
, envía cada uno a stdout
y luego usleep
s antes de continuar. Asegúrese de quitar el búfer de la salida estándar, o esto se ejecutará de forma bastante brusca.
Llamé a esto slowcat.c
:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char**argv){
int c;
useconds_t stime=10000; // defaults to 100 Hz
if (argc>1) { // Argument is interperted as Hz
stime=1000000/atoi(argv[1]);
}
setvbuf(stdout,NULL,_IONBF,0);
while ((c=fgetc(stdin)) != EOF){
fputc(c,stdout);
usleep(stime);
}
return 0;
}
Compílalo y prueba con
$ ./slowcat 10 < slowcat.c
el acelerador parece diseñado específicamente para esto. por ejemplo
cat /dev/urandom | throttle -k 3 | foo