Bisakah program mendeteksi itu berjalan di layar terpisah?

10

Saya menjalankan program kutukan interaktif dalam sesi layar pada perangkat keras yang cukup lemah. Sebagian besar waktu, layar terlepas. Apakah ada cara untuk program ini untuk mendeteksi situasi ini, dan pada dasarnya berhenti melukis di layar?

Joachim Breitner
sumber
saya hanya ingin tahu: apa saja alasan Anda menjalankan layar terpisah?
amfibi
3
@foampile Jika Anda tidak akan pernah melepaskan layar, apa gunanya berlari di dalam layar sama sekali?
Michael Mrozek

Jawaban:

8

Ada skrip irssi yang disebut screen_awayyang menetapkan status Anda berdasarkan apakah layar terpasang atau tidak. Ini berfungsi seperti ini:

Setiap shell yang berjalan di dalam layar akan memiliki STYvariabel lingkungan diatur ke nama soket. Anda dapat berlari screen -lsuntuk mendapatkan jalur tempat semua soket disimpan:

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

Periksa bit eksekusi /var/run/screen/.../$STY. Jika diatur, layar terpasang; kalau tidak terlepas. Anda dapat melihat dari output di atas bahwa dua dari tiga layar saya terpasang, dan di sini bit eksekusi yang sesuai diatur:

$ 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

Anda juga bisa terus memeriksa output screen -lsuntuk baris yang berisi $STY, dan melihat apakah itu berakhir (Attached)atau (Detached), tetapi itu membutuhkan berjalan screenberulang-ulang

Michael Mrozek
sumber
1
Ha, belajar sesuatu yang baru hari ini. Adakah ide jika bit eksekusi itu berarti lebih dari sekadar bendera "terpasang / terlepas"?
jw013