Kann ein Programm erkennen, dass es auf einem getrennten Bildschirm ausgeführt wird?

10

Ich führe ein interaktives Fluchprogramm in einer Bildschirmsitzung auf ziemlich schwacher Hardware aus. Meistens ist der Bildschirm abgenommen. Gibt es eine Möglichkeit für dieses Programm, diese Situation zu erkennen und im Grunde genommen nicht mehr auf dem Bildschirm zu malen?

Joachim Breitner
quelle
Ich bin nur neugierig: Was sind einige der Gründe, warum Sie einen abgetrennten Bildschirm betreiben würden?
Amphibient
3
@foampile Wenn Sie den Bildschirm niemals abnehmen wollen, wozu wird der Bildschirm überhaupt ausgeführt?
Michael Mrozek

Antworten:

8

Es gibt ein irssi-Skript namens screen_away, das Ihren Abwesenheitsstatus basierend darauf festlegt, ob der Bildschirm angehängt ist oder nicht. Es funktioniert so:

Für jede Shell, die in einem Bildschirm ausgeführt wird, wird die STYUmgebungsvariable auf den Socket-Namen festgelegt. Sie können ausführen screen -ls, um den Pfad abzurufen, in dem alle Sockets gespeichert sind:

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

Überprüfen Sie das Ausführungsbit ein /var/run/screen/.../$STY. Wenn es eingestellt ist, wird der Bildschirm angehängt; sonst ist es losgelöst. Sie können der obigen Ausgabe entnehmen, dass zwei meiner drei Bildschirme angehängt sind und hier die entsprechenden Ausführungsbits gesetzt sind:

$ 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

Sie könnten auch nur halten die Ausgabe der Überprüfung screen -lsfür eine Zeile , die enthält $STY, und sehen , ob es in endet (Attached)oder (Detached), aber das erfordert laufen screenüber und über

Michael Mrozek
quelle
1
Ha, habe heute etwas Neues gelernt. Irgendeine Idee, ob dieses Ausführungsbit mehr als nur ein "angehängtes / getrenntes" Flag bedeutet?
jw013