程序可以检测到它正在独立屏幕中运行吗?


10

我正在相当弱的硬件上的屏幕会话中运行交互式curses程序。大多数情况下,屏幕是分离的。该程序是否可以检测到这种情况,并基本上停止在屏幕上绘画?


我只是很好奇:运行独立屏幕的原因有哪些?
两栖游戏,2012年

3
@foampile如果您永远不会拆离屏幕,那么在屏幕内运行到底有什么意义呢?
Michael Mrozek

Answers:


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,2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.