Display usado pela tela em utmp

1

O sistema de janelas X em um desktop Linux (onde apenas um monitor físico é usado) geralmente usa a tela 0, tela 0. A saída de who no Ubuntu 14.04 é

user1   :0           2016-06-15 14:25 (:0)

em que :0 é a abreviação de :0.0 ( :display.screen ). Aqui eu entrei apenas na GUI.

Então eu abri um emulador de terminal; Corri screen e criei duas janelas diferentes (cada uma delas continha bash ). A saída resultante de who foi:

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)

Por que essa sintaxe é usada? Parece ser :display:display.screen . O screen emula outro monitor dentro da exibição física?

    
por BowPark 20.06.2016 / 11:26

1 resposta

3

Você está se referindo ao texto no final da linha. Isso é escrito por screen para indicar qual conexão pseudo-terminal está usando, bem como qual número de janela screen atribuiu a ela. Comentários no código indicam o que ele faz:

/* 
 * 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. 
 */

e mais tarde

      /* 
       * 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) 
       */

concluindo com o código real que você pode reconhecer:

    sprintf(host + strlen(host), ":S.%d", win->w_number);

    strncpy(u.ut_host, host, sizeof(u.ut_host));

que armazena a string no membro ut_host da estrutura utmp / utmpx.

Leitura adicional:

por 20.06.2016 / 11:34