.\" -*- coding: UTF-8 -*- .\" Copyright (c) 1983, 1991 Regents of the University of California. .\" and Copyright (C) 2007, Michael Kerrisk .\" All rights reserved. .\" .\" SPDX-License-Identifier: BSD-4-Clause-UC .\" .\" @(#)getpgrp.2 6.4 (Berkeley) 3/10/91 .\" .\" Modified 1993-07-24 by Rik Faith .\" Modified 1995-04-15 by Michael Chastain : .\" Added 'getpgid'. .\" Modified 1996-07-21 by Andries Brouwer .\" Modified 1996-11-06 by Eric S. Raymond .\" Modified 1999-09-02 by Michael Haardt .\" Modified 2002-01-18 by Michael Kerrisk .\" Modified 2003-01-20 by Andries Brouwer .\" 2007-07-25, mtk, fairly substantial rewrites and rearrangements .\" of text. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH setpgid 2 "5 февраля 2023 г." "Linux man\-pages 6.03" .SH ИМЯ setpgid, getpgid, setpgrp, getpgrp \- устанавливает/получает группу процессов .SH LIBRARY Standard C library (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP .PP \fBint setpgid(pid_t \fP\fIpid\fP\fB, pid_t \fP\fIpgid\fP\fB);\fP \fBpid_t getpgid(pid_t \fP\fIpid\fP\fB);\fP .PP \fBpid_t getpgrp(void);\fP /* POSIX.1 version */ \fB[[deprecated]] pid_t getpgrp(pid_t \fP\fIpid\fP\fB);\fP /* BSD version */ .PP \fBint setpgrp(void);\fP /* System V version */ \fB[[deprecated]] int setpgrp(pid_t \fP\fIpid\fP\fB, pid_t \fP\fIpgid\fP\fB);\fP /* BSD version */ .fi .PP .RS -4 Требования макроса тестирования свойств для glibc (см. \fBfeature_test_macros\fP(7)): .RE .PP \fBgetpgid\fP(): .nf .\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED _XOPEN_SOURCE >= 500 || /* начиная с glibc 2.12: */ _POSIX_C_SOURCE >= 200809L .fi .PP \fBsetpgrp\fP() (POSIX.1): .nf .\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED _XOPEN_SOURCE >= 500 || /* Since glibc 2.19: */ _DEFAULT_SOURCE || /* glibc <= 2.19: */ _SVID_SOURCE .fi .PP \fBsetpgrp\fP() (BSD), \fBgetpgrp\fP() (BSD): .nf [Доступно только в версиях glibc до 2.19] _BSD_SOURCE && ! (_POSIX_SOURCE || _POSIX_C_SOURCE || _XOPEN_SOURCE || _GNU_SOURCE || _SVID_SOURCE) .fi .SH ОПИСАНИЕ Все перечисленные интерфейсы доступны в Linux и используются для получения и установки идентификатора группы процессов (PGID). Предпочтительней использовать версию POSIX.1: \fBgetpgrp\fP(void) — для получения PGID вызывающего процесса; \fBsetpgid\fP() — для установки PGID вызывающего процесса. .PP Вызов \fBsetpgid\fP() устанавливает PGID у процесса с идентификатором \fIpid\fP равным \fIpgid\fP. Если значение \fIpid\fP равно 0, то используется идентификатор вызывающего процесса. Если значение \fIpgid\fP равно 0, то PGID процесса, указанного в \fIpid\fP, становится равным его идентификатору процесса. Если \fBsetpgid\fP() используется для перевода процесса из одной группы в другую (это делают некоторые оболочки командной строки для объединения каналов процессов), то обе группы процессов должны быть частью одного сеанса (см. \fBsetsid\fP(2) и \fBcredentials\fP(7)). В этом случае в \fIpgid\fP указывается существующая группа процессов, в которую нужно выполнить перевод и идентификатор сеанса этой группы должен совпадать с идентификатором сеанса переводимого процесса. .PP В версии POSIX.1 вызов \fBgetpgrp\fP() без аргументов возвращает PGID вызывающего процесса. .PP Вызов \fBgetpgid\fP() возвращает PGID процесса с заданным \fIpid\fP. Если значение \fIpid\fP равно нулю, то используется идентификатор вызывающего процесса (получение PGID процесса, отличного от вызывающего, требуется редко, а для этой задачи хорошо подходит POSIX.1 \fBgetpgrp\fP()). .PP В версии System\ V вызов \fBsetpgrp\fP() без аргументов эквивалентен \fIsetpgid(0,\ 0)\fP. .PP В версии BSD вызов \fBsetpgrp\fP() с аргументами \fIpid\fP и \fIpgid\fP является обёрточной функцией, которая вызывает .PP .in +4n .EX setpgid(pid, pgid) .EE .in .PP .\" The true BSD setpgrp() system call differs in allowing the PGID .\" to be set to arbitrary values, rather than being restricted to .\" PGIDs in the same session. Начиная с glibc 2.19, BSD\-функция \fBsetpgrp\fP() была удалена из \fI\fP; вызовы должны быть заменены на вызов \fBsetpgid\fP(), как показано выше. .PP В версии BSD вызов \fBgetpgrp\fP() с аргументом \fIpid\fP является обёрточной функцией, которая вызывает .PP .in +4n .EX getpgid(pid) .EE .in .PP Начиная с glibc 2.19, BSD\-функция \fBgetpgrp\fP() была удалена из \fI\fP; вызовы должны быть заменены на вызов POSIX.1 \fBgetpgrp\fP(), который не имеет аргументов (если нужно получить PGID вызывающего), или на вызов \fBgetpgid\fP(), как показано выше. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" On success, \fBsetpgid\fP() and \fBsetpgrp\fP() return zero. On error, \-1 is returned, and \fIerrno\fP is set to indicate the error. .PP Вызов \fBgetpgrp\fP() (POSIX.1) всегда возвращает PGID вызывающего процесса. .PP \fBgetpgid\fP(), and the BSD\-specific \fBgetpgrp\fP() return a process group on success. On error, \-1 is returned, and \fIerrno\fP is set to indicate the error. .SH ОШИБКИ .TP \fBEACCES\fP Попытка изменить идентификатор группы процессов у одного из потомков вызывающего процесса, но потомок уже вызвал \fBexecve\fP(2) (\fBsetpgid\fP(), \fBsetpgrp\fP()). .TP \fBEINVAL\fP Значение \fIpgid\fP меньше 0 (\fBsetpgid\fP(), \fBsetpgrp\fP()). .TP \fBEPERM\fP Попытка переместить процесс в группу процессов из другого сеанса или изменить идентификатор группы процессов у одного из потомков вызывающего процесса, но потомок находится в другом сеансе или изменить идентификатор группы процессов лидера сеанса (\fBsetpgid\fP(), \fBsetpgrp\fP()). .TP \fBESRCH\fP Для \fBgetpgid\fP(): нет процесса с указанным \fIpid\fP. Для \fBsetpgid\fP(): значение \fIpid\fP не равно идентификатору вызывающего процесса или идентификатору потомка вызывающего процесса. .SH СТАНДАРТЫ Вызов \fBsetpgid\fP() и версия \fBgetpgrp\fP() без аргументов соответствуют POSIX.1\-2001. .PP В POSIX.1\-2001 также определён вызов \fBgetpgid\fP() и его версия \fBsetpgrp\fP(), у которых нет аргументов (в POSIX.1\-2008 определение \fBsetpgrp\fP() помечено как устаревшее). .PP Версия \fBgetpgrp\fP() с одним аргументом и версия \fBsetpgrp\fP() с двумя аргументами появились из 4.2BSD и отсутствуют в POSIX.1. .SH ЗАМЕЧАНИЯ Потомок, создаваемый с помощью \fBfork\fP(2), наследует идентификатор группы процессов своего родителя. Значение PGID сохраняется при вызове \fBexecve\fP(2). .PP Каждая группа процессов является членом сеанса и каждый процесс является членом сеанса, в который входит его группа процессов (смотрите \fBcredentials\fP(7)). .PP Сеанс может иметь управляющий терминал. В любой момент одна (и только одна) группа процессов в сеансе может являться приоритетной группой процессов (foreground process group) терминала; оставшиеся группы процессов выполняются в фоновом режиме. Если от терминала приходит сигнал (например, нажата клавиша прерывания и сгенерирован \fBSIGINT\fP), то сигнал посылается в приоритетную группу процессов (смотрите в \fBtermios\fP(3) описание символов, для которых генерируются сигналы). Только приоритетная группа процессов может выполнять вызов \fBread\fP(2) для терминала; если группа процессов в фоновом режиме пытается выполнить \fBread\fP(2) для терминала, то группе посылается сигнал \fBSIGTTIN\fP, который приостанавливает её выполнение. Функции \fBtcgetpgrp\fP(3) и \fBtcsetpgrp\fP(3) используются для получения/установки приоритетной группы процессов у управляющего терминала. .PP Вызовы \fBsetpgid\fP() и \fBgetpgrp\fP() используются программами, например \fBbash\fP(1), для создания группы процессов с целью реализации управления заданиями оболочки командной строки. .PP .\" exit.3 refers to the following text: Если завершение процесса лишает группу процессов главы и если любой из такой группы процессов остановлен, то каждому процессу в группе посылается сигнал \fBSIGHUP\fP с последующим \fBSIGCONT\fP. Осиротевшей считается группа процессов, у которой родитель каждого члена группы процессов сам является членом группы процессов или членом группы процессов другого сеанса (см. также \fBcredentials\fP(7)). .SH "СМ. ТАКЖЕ" \fBgetuid\fP(2), \fBsetsid\fP(2), \fBtcgetpgrp\fP(3), \fBtcsetpgrp\fP(3), \fBtermios\fP(3), \fBcredentials\fP(7) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан Alexander Golubev , Azamat Hackimov , Hotellook, Nikita , Spiros Georgaras , Vladislav , Yuri Kozlov и Иван Павлов . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .