tcgetpgrp(3) возвращает и задаёт терминал активной группы

Other Alias

tcsetpgrp

ОБЗОР

#include <unistd.h>

pid_t tcgetpgrp(int fd);

int tcsetpgrp(int fd, pid_t pgrp);

ОПИСАНИЕ

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

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

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

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

Когда fd ссылается на управляющий терминал вызывающего процесса, функция tcgetpgrp() возвращает идентификатор активной группы процессов этого терминала, если такой существует, или некоторое значение больше 1, не являющееся в данный момент идентификатором группы процессов, в другом случае. Когда fd не ссылается на управляющий терминал вызывающего процесса, возвращается -1, а переменная errno устанавливается соответственно ошибке.

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

ОШИБКИ

EBADF
Значение fd не является правильным файловым дескриптором.
EINVAL
Неподдерживаемое значение pgrp.
ENOTTY
Вызывающий процесс не имеет управляющего терминала, или он имеется, но не описан fd, или, для tcsetpgrp(), этот управляющий терминал больше не связан с сеансом вызывающего процесса.
EPERM
В pgrp содержится поддерживаемое значение, но это не идентификатор группы процессов для процесса в том же сеансе, что и вызывающий процесс.

АТРИБУТЫ

Описание терминов данного раздела смотрите в attributes(7).
ИнтерфейсАтрибутЗначение
tcgetpgrp(), tcsetpgrp() безвредность в нитяхбезвредно (MT-Safe)

СООТВЕТСТВИЕ СТАНДАРТАМ

POSIX.1-2001, POSIX.1-2008.

ЗАМЕЧАНИЯ

Эти функции реализованы через вызовы ioctl TIOCGPGRP и TIOCSPGRP.

История

Эти вызовы ioctl появились в 4.2BSD. Функции являются изобретениями POSIX.