[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Получение/установка идентификатора сессии

Каждый процесс принадлежит к сессии и группе процессов. Сессия
создается для вас, когда вы входите в систему. Первый терминал,
открытый лидером сессии, который не был уже ассоциирован с другой
сессией, становится управляющим терминалом для этой сессии.
Управляющий терминал генерирует сигналы завершения и прерывания (quit
и interrupt), а также сигналы управления заданиями. Управляющим
терминалом для вашего shell'а является тот терминал, с которого вы
вошли в систему. Управляющий терминал наследуется процессом,
порожденным при помощи fork(2). Процесс может разорвать связь со своим
управляющим терминалом, создав новую сессию с использованием
setsid(2).
Если вызывающий процесс не является уже лидером группы процессов,
setsid(2) устанавливает идентификаторы группы процессов и сессии
вызывающего процесса равными его идентификатору процесса и отсоединяет
его от управляющего терминала. setsid(2) создает новую сессию,
превращая вызвавший процесс в лидера этой сессии. Новые сессии
создаются чтобы:
  1. отсоединить вызвавший  процесс от терминала, так что этот процесс
     не будет  получать от  этого терминала  сигналы SIGHUP,  SIGINT и
     сигналы управления заданиями.

  2. позволить процессу  назначить новый  управляющий терминал. Только
     лидер сессии  может  назначить  управляющий  терминал.  Например,
     ttymon  создает   новую  сессию   и,  таким   образом,  назначает
     управляющий терминал, когда пользователь входит в систему.

getsid(2) возвращает идентификатор сессии процесса с идентификатором,
равным pid. Если pid равен нулю, getsid(2) возвращает идентификатор
сессии вызвавшего процесса.
Новое в SVR4: setsid(2) и getsid(2)
              ПОЛУЧЕНИЕ/УСТАНОВКА ИДЕНТИФИКАТОРА СЕССИИ
setsid(2)

ИМЯ

      setsid - установить идентификатор сессии

ИСПОЛЬЗОВАНИЕ

      #include <sys/types.h>
      #include <unistd.h>

      pid_t setsid(void);

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

      успех - новый идентификатор сессии

      неуспех - -1 и errno установлена


getsid(2)

ИМЯ

      getsid - получить идентификатор сессии

ИСПОЛЬЗОВАНИЕ

      #include <sys/types.h>
      #include <unistd.h>

      pid_t getsid(pid_t pid);

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

      успех - идентификатор сессии

      неуспех - -1, и errno установлена