GNU/Linux >> Linux Esercitazione >  >> Linux

Come limitare la velocità di una pipe sotto Linux?

Pipe Viewer ha questa funzione.

cat /dev/urandom | pv -L 3k | foo

Direi che Juliano ha la risposta giusta se hai quello strumento, ma suggerirei anche che questo è un piccolo esercizio in stile K&R:basta scrivere una versione specializzata di gatto che legge un carattere alla volta da stdin , restituisce ciascuno a stdout e poi usleep s prima di andare avanti. Assicurati di annullare il buffer dell'output standard, altrimenti funzionerà a scatti.

Ho chiamato questo 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;
}

Compilalo e prova con

$ ./slowcat 10 < slowcat.c

l'acceleratore sembra progettato specificamente per questo. ad esempio

cat /dev/urandom | throttle -k 3 | foo

Linux
  1. Come installare Python su Linux

  2. Come installare Java su Linux

  3. Come partizionare un disco in Linux

  4. Come utilizzare FTP in Linux per trasferire file

  5. Come usare il comando tar sotto Linux

Come installare Linux in 3 passaggi

Come spostare un file in Linux

Come trovare file in Linux

Come reindirizzare i risultati di "trova" a mv in Linux

Come recuperare un file rimosso sotto Linux?

Come tagliare un file a una determinata dimensione sotto Linux?