Функция
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.