Scroll to navigation

SETSID(2) Руководство программиста Linux SETSID(2)

ИМЯ

setsid - создает сеанс и устанавливает идентификатор группы процесса

ОБЗОР

#include <unistd.h>

pid_t setsid(void);

ОПИСАНИЕ

setsid() создает новый сеанс, если вызывающий процесс не является лидером группы процессов. Вызывающий процесс становится лидером нового сеанса, лидером новой группы процессов и не имеет управляющего терминала. Идентификатор группы процессов и сеанса вызывающего процесса устанавливаются равными идентификатору вызывающего процесса (PID). Вызывающий процесс будет единственным в этой новой группе процессов и новом сеансе.

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

При успешном выполнении возвращается идентификатор (нового) сеанса вызывающего процесса. В случае ошибки возвращается (pid_t) -1, а errno устанавливается в соответствующее значение.

ОШИБКИ

Идентификатор группы процессов любого процесса равен PID вызывающего процесса. В этом случае, в частностти, setsid() завершается неудачно, если вызывающий процесс уже является лидером группы процессов.

СООТВЕТСТВИЕ СТАНДАРТАМ

SVr4, POSIX.1-2001.

ЗАМЕЧАНИЯ

Потомок, создаваемый с помощью fork(2), наследует ID сеанса своего родителя. Идентификатор сеанса сохраняется при вызове execve(2).

Лидер группы процессов — это процесс, идентификатор группы процессов которого равен идентификатору самого процесса (PID). Для того, чтобы удостовериться, что функция setsid() выполнится успешно, создайте дочерний процесс при помощи fork(2) и _exit(2), а затем в дочернем процессе сделайте вызов setsid().

СМОТРИТЕ ТАКЖЕ

getsid(2), setpgid(2), setpgrp(2), tcgetsid(3), credentials(7)

2008-12-03 Linux