Чи може програма визначити, що вона працює в окремому екрані?


10

Я запускаю інтерактивну програму прокльонів на екрані сесії на досить слабкому обладнання. Більшу частину часу екран знімається. Чи є в цій програмі спосіб виявити цю ситуацію і в основному припинити малювати на екрані?


Мені просто цікаво: з яких причин ви запускаєте окремий екран?
амфібій

3
@foampile Якщо ви ніколи не збираєтесь знімати екран, який сенс взагалі працювати в екрані?
Майкл Мрозек

Відповіді:


8

Існує сценарій irssi під назвою, screen_awayякий встановлює ваш статус відключення залежно від того, доданий екран чи ні. Це працює так:

Кожна оболонка, що працює на екрані, 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. Якщо він встановлений, екран додається; інакше він відокремлений. З висновку видно, що два мої три екрани додаються, і тут встановлені відповідні біти виконання:

$ 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.