2010-03-12 17 views
7

Gibt es irgendwelche Einschränkungen für die Eingabe von stdin-Eingängen (in der Menge der Eingangs- oder Eingangsgeschwindigkeit)?Ist Stdin in der Länge begrenzt?

+5

warum postest du nicht den Code, der dir Probleme gibt – naumcho

+0

Frage ist allgemein. Über Hauptprodukte und Konzepte. – Rella

+0

Die Menge der gepufferten Eingabe wird vom Betriebssystem bestimmt, denke ich. Wenn der Puffer voll ist, können/werden Versuche blockieren, und wenn der Puffer leer ist, können/können Versuche gesperrt werden. (Ich vermute hier). – dreamlax

Antwort

1

Es hängt wahrscheinlich vom stdin Treiber ab!

stdin (als Konzept) hat keine Beschränkung.

Ich erwarte, dass Kernel-Entwickler (von beliebigen Systemen) einige Design-Entscheidungen getroffen haben, die Einschränkungen hinzufügen.

1

Es gibt keine Längenbeschränkungen für stdin. Wenn Sie keine großen Datenmengen empfangen können, verursacht der Code die Probleme.

+0

und eine GESCHWINDIGKEIT des Sendens von Datenlimits? – Rella

2

Nach jeder anderen favorite Q&A site:

Es sollte nicht eine Grenze für die Stromgröße sein (ob das stdin oder einem anderen). Was Sie jedoch überprüfen möchten, ist, wo Sie diese Zeichen speichern ... Gibt es genug Platz, um sie alle zu speichern?

Versuchen Sie, nur Code wie folgt (ohne Speichern!):

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

und sehen, ob es die gleiche Einschränkung hat.

0

Der Übertragungsgeschwindigkeit sind Grenzen gesetzt. Im Allgemeinen sind sie ungefähr die gleichen wie jede "UNIX" -Pipe. Es gibt effizientere Mechanismen, die von den meisten Betriebssystemen angeboten werden, aber Rohre sind ziemlich schnell ... vorausgesetzt, Sie verwenden nicht printf & wie.

6

Nein. stdin hat keine Längen- oder Geschwindigkeitsbeschränkungen.

Wenn Sie Gigabytes Daten über stdin erhalten möchten, können Sie das tun, und Ihr Computer wird es so schnell wie möglich liefern.

1

Ausprobieren:

Die yes UNIX-Befehlsausgänge Linien y endlos. Pipe es zu einem C-Programm, das nur stdin liest und es auf stdout setzt (z. B. cat, aber tr 'y' 'y' funktioniert auch). Warten Sie, bis cat abstürzt oder Ihre Geduld erreicht seine Grenze:

yes | cat 

über den Geschwindigkeitsfaktor, Grenzwerte nicht durch Sprache oder OS bestimmt, sondern durch Hardware (CPU, RAM, Festplatte, SATA, Netzwerk, ...)

+0

Es gibt wirklich einen Befehl für alles. –

+1

Es wird verwendet, wenn ein anderer Befehl eine Bestätigung benötigt, die nicht deaktiviert werden kann (wie ein hartcodierter 'rm -i'). – mouviciel

Verwandte Themen