TCGETPGRP(3)

НАЗВАНИЕ
tcgetpgrp, tcsetpgrp - получение и определение основной группы процессов терминала

СИНТАКСИС

#include <unistd.h>

pid_t tcgetpgrp(int fd);

int tcsetpgrp(int fd, pid_t pgrp);

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

Функция tcsetpgrp() делает группу процессов с идентификатором pgrp основной группой процессов на терминале, ассоциированном с fd, который должен быть управляющим терминалом для вызывающего процесса, и все еще быть ассоциированным с его сессией. Более того, pgrp должно быть (непустой) группой процессов, принадлежащих к той же сессии, что и вызывающий процесс.

Если tcsetpgrp() вызывается членом группы фоновых процессов в этой сессии, и вызывающий процесс не блокирует или игнорирует SIGTTOU, то сигнал SIGTTOU отправляется всем членам этой группы фоновых процессов.

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

При нормальном завершении работы tcsetpgrp() возвращает 0. Иначе возвращается -1, а переменная errno устанавливается соответственно ошибке.

НАЙДЕННЫЕ ОШИБКИ

EBADF
    fd не является корректным описателем файла.

EINVAL
    pgrp имеет неподдерживаемое значение.

EPERM
    pgrp имеет поддерживаемое значение, но не является идентификатором группы процессов для процесса в той же сессии, что и вызывающий процесс.

ENOTTY
    Вызывающий процесс не имеет управляющего терминала, или он имеется, но не описан в fd, или, для tcsetpgrp(), этот управляющий терминал больше не ассоциирован с сессией вызывающего процесса.

ЗАМЕЧАНИЯ
Эти функции реализованы через вызовы ioctl TIOCGPGRP и TIOCSPGRP.

ПРИМЕЧАНИЯ ПО ИСТОРИИ
Эти вызовы ioctl появились в 4.2 BSD. Функции явояются изобретениями POSIX.

СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1

СМ. ТАКЖЕ
setpgid(2), setsid(2)