Создать новую сессию
#include <unistd.h>pid_t setsid( void );
libc
Функция setsid() создает новую сессию (сеанс), в которой вызывающий процесс становится лидером сессии без управляющего терминала. Идентификатор группы процессов для вызывающего процесса устанавливается равным идентификатору этого процесса. Вызывающий процесс является единственным процессом в новой группе процессов, а также единственным процессом новой сессии.
Если вызывающий процесс уже является лидером сессии, новая сессия не создается и функция завершается с ошибкой.
Новый идентификатор группы процессов для вызывающего процесса. Если возникла ошибка, функция возвращает -1
, код ошибки записывается в errno.
/** Лидером сессии можно стать в том случае,* если процесс не является лидером группы* для выполняемой из оболочки команды.*/#include <stdio.h>#include <sys/types.h>#include <unistd.h>#include <stdlib.h>int main( void ){if ( fork() ){if ( setsid() == -1 )perror( "Родитель: setsid" );elseprintf( "Родитель: Я лидер сессии\n" );} else {if ( setsid() == -1 )perror( "Потомок: setsid" );elseprintf( "Потомок: Я лидер сессии\n" );}return (EXIT_SUCCESS);}
POSIX 1003.1
Предыдущий раздел: Описание API системной библиотеки