Pipe Viewer a cette fonctionnalité.
cat /dev/urandom | pv -L 3k | foo
Je dirais que Juliano a la bonne réponse si vous avez cet outil, mais je suggérerais également qu'il s'agit d'un petit exercice de style K&R soigné :écrivez simplement une version spécialisée de cat qui lit un caractère à la fois à partir de stdin
, sort chacun vers stdout
puis usleep
s avant de continuer. Assurez-vous de débloquer la sortie standard, sinon cela fonctionnera plutôt de manière saccadée.
J'ai appelé ce 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;
}
Compilez-le et essayez avec
$ ./slowcat 10 < slowcat.c
l'accélérateur semble conçu spécifiquement pour ça. ex.
cat /dev/urandom | throttle -k 3 | foo