プログラムは、切り離された画面で実行されていることを検出できますか?


10

非常に弱いハードウェアのスクリーンセッションでインタラクティブなcursesプログラムを実行しています。ほとんどの場合、画面は切り離されています。このプログラムがこの状況を検出し、基本的に画面での描画を停止する方法はありますか?


私はただ興味があります:デタッチされた画面を実行する理由のいくつかは何ですか?
両生類、

3
@foampile画面を切り離さない場合、画面内で実行する意味は何ですか?
マイケル・ムロゼック

回答:


8

screen_away画面が接続されているかどうかに基づいて退席中のステータスを設定するirssiスクリプトが呼び出されます。それはこのように動作します:

画面内で実行されるすべてのシェルには、STY環境変数がソケット名に設定されます。screen -lsすべてのソケットが格納されているパスを取得するために実行できます。

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

の実行ビットを確認し/var/run/screen/.../$STYます。設定されている場合、画面がアタッチされます。それ以外の場合は切り離されます。上記の出力から、3つの画面のうち2つが接続され、対応する実行ビットが設定されていることがわかります。

$ 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

screen -lsを含む行の出力をチェックし続け$STY、それが(Attached)またはで終わるかどうかを確認することもできますが(Detached)、これにはscreen何度も実行する必要があります


1
ハ、今日何か新しいことを学びました。その実行ビットが単なる「アタッチ/デタッチ」フラグ以上のものを意味するかどうか、何か考えはありますか?
jw013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.