¿Hay alguna limitación de longitud de entrada estándar (en cantidad de entrada o velocidad de entrada)?¿Está stdin limitado en longitud?
Respuesta
¡Probablemente dependa del controlador stdin!
stdin (como concepto) no tiene ninguna limitación.
Espero que los desarrolladores de kernel (de cualquier sistema) hayan tomado algunas decisiones de diseño que añaden limitaciones.
No hay límites de longitud en stdin
. Si no puede recibir grandes cantidades de datos, es su código el que crea los problemas.
y cualquier VELOCIDAD de envío de límites de datos? – Rella
De acuerdo a todo el mundo de otra favorite Q&A site:
No debería haber un límite en el tamaño de la corriente (si esa es la entrada estándar u otro). Sin embargo, lo que tal vez quiera comprobar es dónde almacena estos caracteres ... ¿Hay espacio suficiente para almacenarlos todos?
intente Es un código como éste (sin almacenar!):
for (;;) {
int c = getc(stdin);
if (c == EOF) { break; }
putc(c, stdout);
}
y ver si tiene la misma restricción.
Existen límites en la velocidad de transferencia. En general, son aproximadamente los mismos que cualquier tubería "UNIX". La mayoría de los sistemas operativos ofrecen mecanismos más eficientes, pero las tuberías son bastante rápidas ... suponiendo que no esté utilizando printf &.
No. stdin
no tiene límites de longitud o velocidad.
Si desea obtener gigabytes de datos a través de stdin
puede, y su computadora lo proporcionará tan rápido como sea posible.
Práctica:
Los yes
UNIX salidas de comando líneas de y
sin fin. Conéctelo a un programa C que solo lea stdin y lo ponga en stdout (por ejemplo, cat
, pero tr 'y' 'y'
también funciona). Esperar hasta cat
accidentes o su paciencia llega a su límite:
yes | cat
Sobre el factor de velocidad, los límites no están determinadas por el lenguaje o sistema operativo, pero por el hardware (CPU, RAM, disco duro, SATA, red, ...)
Realmente hay un comando para todo. –
Se utiliza cuando otro comando necesita confirmación que no se puede deshabilitar (como un 'rm -i' codificado). – mouviciel
- 1. Truncar la longitud de la línea stdin?
- 2. ¿Está CERRADO/FCLOSE en stdin se garantiza que es correcto?
- 3. ¿Está MongoDB de alguna manera limitado a un solo núcleo?
- 4. cadena [longitud()] en C++, ¿está bien?
- 5. ¿Redirigir STDIN en bash?
- 6. Formato stdin en bash
- 7. ¿Cómo verificar si stdin aún está abierto sin bloqueo?
- 8. ¿Cuál es la diferencia entre STDIN y $ stdin en Ruby?
- 9. cola de tamaño limitado
- 10. C# Diccionario limitado
- 11. Mi FPS limitado: 60
- 12. ¿Es php muy limitado?
- 13. Crear un FileStream parcial (o limitado) en C#
- 14. Lee STDIN (SYSIN) en COBOL
- 15. ¿Cómo fuerzo eof en stdin?
- 16. ¿Cómo reinicio Stdin en Haskell?
- 17. execv * y escriba en stdin
- 18. ssh-keygen aceptando stdin
- 19. ¿Por qué Valgrind está limitado a 32 Gb en arquitecturas de 64 bits?
- 20. ¿Prototipo JavaScript limitado a funciones?
- 21. maxOcurrencias = no limitado php jabón
- 22. longitud y longitud() en Java
- 23. zerqq zmq.Poller & stdin
- 24. Leer contraseña de stdin
- 25. Flushing Perl STDIN buffer
- 26. stdout y stdin relaciones
- 27. LLVM stdin/stdout/stderr
- 28. Python: Postfix stdin
- 29. ¿Cómo leer desde stdin con fgets()?
- 30. JRuby limitado openssl cargado - ¿cómo eliminar?
¿por qué no publica el código que le causa problemas? – naumcho
pregunta es general. Sobre los principales rools y conceptos. – Rella
La cantidad de entrada en el búfer la determina el sistema operativo, creo. Si el búfer está lleno, las escrituras intentadas pueden/se bloquearán, y si el búfer está vacío, las lecturas intentadas pueden/se bloquearán. (Supongo que aquí). – dreamlax