¿Puede un programa detectar que se está ejecutando en una pantalla separada?

10

Estoy ejecutando un programa interactivo de maldiciones en una sesión de pantalla en hardware bastante débil. La mayoría de las veces, la pantalla está separada. ¿Hay alguna forma de que este programa detecte esta situación y básicamente deje de pintar en la pantalla?

Joachim Breitner
fuente
Solo tengo curiosidad: ¿cuáles son algunas de las razones por las que ejecutarías una pantalla separada?
anfibio
3
@foampile Si nunca vas a separar la pantalla, ¿cuál es el punto de correr dentro de la pantalla?
Michael Mrozek

Respuestas:

8

Hay un script irssi llamado screen_awayque establece su estado de ausencia en función de si la pantalla está conectada o no. Funciona así:

Cada shell que se ejecuta dentro de una pantalla tendrá la STYvariable de entorno establecida en el nombre del socket. Puede ejecutar screen -lspara obtener la ruta donde se almacenan todos los sockets:

$ screen -ls

There are screens on:
        11824.pts-24.mmrozek    (Attached)
        2306.ssh        (Detached)
        6615.chat       (Attached)
3 Sockets in /var/run/screen/S-mmrozek.

Verifique el bit de ejecución /var/run/screen/.../$STY. Si está configurado, la pantalla está adjunta; de lo contrario está separado. Puede ver en el resultado anterior que dos de mis tres pantallas están conectadas, y aquí se establecen los bits de ejecución correspondientes:

$ ls -l /var/run/screen/S-mmrozek/

total 0
prwx------ 1 mmrozek mmrozek 0 Oct  5 13:04 11824.pts-24.mmrozek
prw------- 1 mmrozek mmrozek 0 Sep 23 23:45 2306.ssh
prwx------ 1 mmrozek mmrozek 0 Oct  5 12:43 6615.chat

También puede seguir comprobando la salida de screen -lsuna fila que contiene $STYy ver si termina en (Attached)o (Detached), pero eso requiere ejecutar screenuna y otra vez

Michael Mrozek
fuente
1
Ja, aprendí algo nuevo hoy. ¿Alguna idea de si ese bit de ejecución significa algo más que un simple indicador "adjunto / desconectado"?
jw013