桌面 Linux 中的 X 窗口系统(仅使用一个物理显示器)通常使用显示器 0、屏幕 0。Ubuntu who
14.04 中的输出为
user1 :0 2016-06-15 14:25 (:0)
其中( ):0
的缩写。在这里我仅从 GUI 登录。:0.0
:display.screen
然后我打开一个终端模拟器;我运行screen
并创建了两个不同的窗口(每个窗口都只包含bash
)。的结果输出who
是:
user1 :0 2016-06-15 14:25 (:0)
user1 pts/1 2016-06-15 14:26 (:0)
user1 pts/11 2016-06-15 16:31 (:0:S.0)
user1 pts/11 2016-06-15 16:31 (:0:S.1)
为什么使用这个语法?好像是:display:display.screen
。是否screen
在物理显示器内模拟另一个显示器?
答案1
您指的是该行末尾的文本。它被写入以screen
指示它正在使用哪个伪终端连接,以及screen
为其分配了哪个窗口号。 评论代码中指出它的作用:
/*
* Construct a utmp entry for window wi.
* the hostname field reflects what we know about the user (display)
* location. If d_loginhost is not set, then he is local and we write
* down the name of his terminal line; else he is remote and we keep
* the hostname here. The letter S and the window id will be appended.
* A saved utmp entry in wi->w_savut serves as a template, usually.
*/
/*
* we want to set our ut_host field to something like
* ":ttyhf:s.0" or
* "faui45:s.0" or
* "132.199.81.4:s.0" (even this may hurt..), but not
* "faui45.informati"......:s.0
* HPUX uses host:0.0, so chop at "." and ":" (Eric Backus)
*/
最后给出您可能认识的实际代码:
sprintf(主机 + strlen(主机), ":S.%d", win->w_number); strncpy(u.ut_host, 主机, sizeof(u.ut_host));
它将字符串存储在ut_host
utmp/utmpx 结构的成员中。
进一步阅读: