Pregunta

pregunta de soporte de bits. Disculpas por ello. Tengo una aplicación vinculada con readline de GNU. La aplicación puede invocar comandos shell (similares a invocar tclsh usando envoltura readline). Cuando trato de invocar el comando less Linux, me sale el siguiente error: Suspender (salida TTY)

No soy un experto en torno a cuestiones de terminales. He tratado de google, pero no encontró respuesta. ¿Alguien sabe cómo solucionar este problema?

Gracias.

¿Fue útil?

Solución

Mientras contrario a la intuición puede ser detenido a la espera de la entrada (algunos sistemas operativos y conchas dan detiene / Suspendido (salida TTY) cuándo se puede esperar que se refiere a (entrada TTY)). Esto encajaría el comportamiento habitual de menos cuando se detiene al final de (lo que se cree es) de la longitud de la pantalla.

¿Se puede utilizar el gato o la cabeza en su lugar? o dar de comer menos alguna entrada? o buscar en las páginas menos man / info para ver qué opciones a menos podrían satisfacer sus necesidades (por ejemplo W, Z, F)?

Otros consejos

Es probable que tenga para investigar las funciones de rl_prep_terminal() y rl_deprep_terminal() documentado en el readline Manual:

  

Función: void rl_prep_terminal(int meta_flag)

     

Modificar los ajustes del terminal de uso de Readline, por lo readline() puede leer un solo carácter a la vez desde el teclado. El argumento meta_flag debe ser distinto de cero si Readline debe leer la entrada de ocho bits.

     

Función: void rl_deprep_terminal(void)

     

deshacer los efectos de rl_prep_terminal(), dejando el terminal en el estado en el que estaba antes de la llamada más reciente a rl_prep_terminal().

Es probable que se confunda si el terminal ya está en el modo especial usado por la biblioteca Readline y trata de modificar el terminal en un modo equivalente El programa less. Este es un problema común para los programas que trabajan con la biblioteca maldiciones, u otras bibliotecas similares que ajustar el estado del terminal y ejecutar otros programas que también hacen eso.

Su aplicación readline se está haciendo la aplicación de control para su TTY.
Cuando se invoca menos desde dentro de la aplicación, se quiere estar en control de la TTY también.

Si usted está tratando de invocar menos en su aplicación para mostrar un archivo para el usuario, que desea establecer el nuevo proceso fork'd en su propio grupo de procesos antes de llamar a Exec.
Usted puede hacer esto con setsid () . Luego, cuando menos tcsetpgrpp llamada (), no va a conseguir echado en el fondo de color con SIGTTOU.

Cuando menos acabados, querrá restaurar el grupo de procesos foregroud con tcsetpgrp () , también.

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