table of contents
SETSID(2) | Руководство программиста Linux | 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)
2008-12-03 | Linux |