SETSID(2)

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

ОБЗОР
#include <unistd.h>

pid_t setsid(void);

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

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении возвращается идентификатор (нового) сеанса вызывающего процесса. В случае ошибки возвращается (pid_t) -1, а errno устанавливается в соответствующее значение.

ОШИБКИ

EPERM
    Идентификатор группы процессов любого процесса равен 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)