Un programma può rilevare che è in esecuzione in uno schermo separato?


10

Sto eseguendo un programma di maledizioni interattive in una sessione di schermo su hardware piuttosto debole. Il più delle volte, lo schermo è staccato. C'è un modo per questo programma di rilevare questa situazione e sostanzialmente smettere di dipingere sullo schermo?


sono solo curioso: quali sono alcuni dei motivi per cui avresti eseguito uno schermo staccato?
anfibio,

3
@foampile Se non hai mai intenzione di staccare lo schermo, qual è il punto di correre all'interno dello schermo?
Michael Mrozek

Risposte:


8

C'è uno script irssi chiamato screen_awayche imposta il tuo stato di assenza in base al fatto che lo schermo sia collegato o meno. Funziona così:

Ogni shell in esecuzione all'interno di una schermata avrà la STYvariabile di ambiente impostata sul nome del socket. È possibile eseguire screen -lsper ottenere il percorso in cui sono memorizzati tutti i socket:

$ 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.

Controllare il bit di esecuzione attivato /var/run/screen/.../$STY. Se è impostato, lo schermo è collegato; altrimenti è staccato. Dall'output sopra puoi vedere che sono collegati due dei miei tre schermi, e qui sono impostati i corrispondenti bit di esecuzione:

$ 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

Potresti anche continuare a controllare l'output di screen -lsper una riga che contiene $STYe vedere se termina in (Attached)o (Detached), ma ciò richiede che si verifichi screenripetutamente


1
Ah, ho imparato qualcosa di nuovo oggi. Qualche idea se quel bit di esecuzione significhi qualcosa di più di un semplice flag "attaccato / staccato"?
jw013,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.