setpgid, getpgid, setpgrp, getpgrp - устанавливает/получает группу процессов
НАЗВАНИЕsetpgid, getpgid, setpgrp, getpgrp -
устанавливает/получает группу процессов
СИНТАКСИС
#include
int setpgid(pid_t pid, pid_t pgid);
pid_t getpgid(pid_t pid);
int setpgrp(void);
pid_t getpgrp(void);
ОПИСАНИЕ
setpgid присваивает идентификатор группы процессов pgid
тому процессу, который был определен pid. Если значение
pid равно нулю, то процессу присваивается идентификатор
текущего процесса. Если значение pgid равно нулю, то
используется идентификатор процесса, указанный pid. Если
setpgid используется для перевода процесса из одной группы
в другую, то обе группы должны быть частью одной сессии.
В этом случае pgid указывает на существующую группу
процессов, с которой должен ассоциироваться процесс, а
идентификатор сессии этой группы должен соответствовать
идентификатору сессии присоединяющегося процесса. getpgid
возвращает идентификатор группы процессов, к которой
принадлежит процесс, указанный pid. Если значение pid
равно нулю, то используется идентификатор текущего
процесса. В библиотеке Linux DLL 4.4.1 setpgrp просто
вызывает setpgid(0,0). Значение getpgrp эквивалентно
getpgid(0). Каждая группа процессов является компонентом
сеанса, и, соответственно, каждый процесс является членом
того сеанса, компонентом которого является его группа
процессов. Группы процессов используются для доставки
сигнала и как терминалы для разрешения запросов на ввод
данных: процесс, который принадлежит той же группе, что и
терминал, имеет преимущество над процессами других групп.
Эти вызовы используются такими программами, как csh(1) для
создания групп процессов в целях осуществления контроля
над процессами. Вызовы TIOCGPGRP и TIOCSPGRP описаны в
termios(4) и используются для получения/установления групп
процессов управляющего терминала. Если у сеанса есть
управляющий терминал, то CLOCAL не устанавливается и
соединение разрывается, затем программе,
инициализировавшей сеанс, посылается сигнал SIGHUP. Если
эта программа закрывается, то сигнал SIGHUP будет послан
каждому процессу в группе управляющего терминала. Если
инициализирующая программа закрыта, а один из ее процессов
остановлен, то каждому процессу в группе посылается сигнал
SIGHUP, а за ним SIGCONT.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При удачном выполнении setpgid и setpgrp возвращаемое
значение равно нулю. При ошибке возвращается -1, а
переменной errno присваивается номер ошибки. getpgid
возвращает идентификатор текущей группы процессов. При
ошибке возвращается -1, а переменной errno присваивается
номер ошибки. getpgrp всегда возвращает идентификатор
группы процессов.
КОДЫ ОШИБОК
EINVAL pgid меньше нуля.
EPERM нарушение различных разрешений.
ESRCH pid не связан ни с одним процессом.
СООТВЕТСТВИЕ СТАНДАРТАМ
Функции setpgid и getpgrp соответствуют POSIX.1. Функция
setpgrp есть в BSD 4.2. Функция getpgid соответствует
SVr4.
ЗАМЕЧАНИЯ
Описанная в POSIX функция setpgid ранее был функцией setp-
grp, описанной в BSD. В SysV есть функция с таким же
названием, но она идентична setsid(2).