Pregunta

Estoy tratando de determinar cómo el sistema imprime caracteres a la entrada estándar - "Enter", es decir, cómo se imprime caracteres que el usuario puede borrar y que se consideran de entrada si el usuario pulsa

Da la casualidad que en C, pero estaría muy sorprendido si la solución fuera del idioma.

Gracias por cualquier idea! : D

¿Fue útil?

Solución

Varias personas han señalado que bash usa readline, lo cual es cierto, pero creo que lo que realmente está pidiendo es cómo es capaz de ver lo que has escrito antes de llegar a entrar.

La respuesta es que ttys. (Es decir: terminales) se pueden conmutar en "modo de crudo", donde el procesamiento de entrada del terminal está desactivada, y luego verá todos los personajes, ya que viene en Esto también desactiva el eco automática de caracteres escritos.

Vea esta guía sobre href="http://osr507doc.sco.com/en/OSUserG/_How_to_get_a_character.html" Lectura de un solo carácter de un archivo o una terminal de para obtener más información.

Otros consejos

Como dice iny, Bash emplea readline para su entrada. La fuente está disponible aquí , y hay un archivo llamado completa. c.

Para responder a su pregunta, no creo que en realidad están impresos en la salida estándar. Readline contiene algún tipo de memoria intermedia de los contenidos de la línea está editando el usuario, y las impresiones acabado para alcanzar esto. Cuando el usuario pulsa Intro, el contenido de la memoria intermedia se envían a cualquier programa que quería leer una línea, y en el caso de fiesta, pasaron junto a la entrada estándar. (Readline no hace esto -. Otros programas que utilizan readline podría simplemente almacenar el valor en una cadena para su uso posterior)

Utiliza la biblioteca readline para manejar la entrada y readline proporciona la historia y la finalización.

Para aplicar en la práctica finalización, se necesita el acceso al manejo de las entradas de teclado. La finalización debe ser capaz de modificar el tampón usado por ella. Después de que se trata sólo de mirar a la entrada de corriente y el control de lo que se encuentra terminaciones. La lógica terminación real puede trabajar de muchas maneras.

He aquí un fragmento C que implementa la implementación del tabulador a través de readline:

http://github.com/rupa/el

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top