2010-03-12 9 views
7

Esistono limitazioni della lunghezza dell'input stdin (quantità di input o velocità di input)?Lo stdin ha una lunghezza limitata?

+5

perché non inserisci il codice che ti dà problemi – naumcho

+0

la domanda è generale. Informazioni su rools e concetti principali. – Rella

+0

La quantità di input bufferizzato è determinata dal sistema operativo, credo. Se il buffer è pieno, le scritture tentate possono bloccare/bloccare e se il buffer è vuoto, le letture tentate possono bloccare/bloccare. (Sto indovinando qui). – dreamlax

risposta

1

Probabilmente dipende dal driver dello stdin!

stdin (come concetto) non ha limiti.

Mi aspetto che gli sviluppatori del kernel (di qualsiasi sistema) abbiano fatto delle scelte progettuali che aggiungono limitazioni.

1

Non ci sono limiti di lunghezza su stdin. Se non puoi ricevere grandi quantità di dati, è il tuo codice che crea i problemi.

+0

e qualsiasi VELOCITA 'di invio dei limiti di dati? – Rella

2

Secondo di tutti altri favorite Q&A site:

Non ci dovrebbe essere un limite alla dimensione flusso (se questo è stdin o nell'altro). Quello che potresti voler controllare, comunque, è dove conservi questi personaggi ... C'è abbastanza spazio per conservarli tutti?

provare solo il codice come questo (senza memorizzare!):

for (;;) { 
    int c = getc(stdin); 
    if (c == EOF) { break; } 
    putc(c, stdout); 
} 

e vedere se ha la stessa restrizione.

0

Ci sono dei limiti nella velocità di trasferimento. In generale, sono approssimativamente uguali a qualsiasi tubo "UNIX". Esistono meccanismi più efficienti offerti dalla maggior parte dei sistemi operativi, ma i tubi sono piuttosto veloci ... presumendo che non si stia utilizzando la stampa &.

6

No. stdin non ha limiti di lunghezza o velocità.

Se si desidera ottenere gigabyte di dati tramite stdin è possibile e il computer lo fornirà il più velocemente possibile.

1

Prova:

I yes unix uscite di comando linee di y all'infinito. Collegalo a un programma C che legge semplicemente stdin e lo inserisce su stdout (ad esempio cat, ma anche tr 'y' 'y' funziona). Attendere che cat crash o la vostra pazienza raggiunge il suo limite:

yes | cat 

Circa il fattore di velocità, limiti non sono determinati dalla lingua o sistema operativo, ma da hardware (CPU, RAM, hard-disk, SATA, di rete, ...)

+0

Esiste davvero un comando per tutto. –

+1

Viene utilizzato quando è necessario confermare un altro comando che non può essere disabilitato (come un 'rm -i') codificato. – mouviciel

Problemi correlati