.\" -*- coding: UTF-8 -*-
.\" Copyright (c) 1983, 1991 Regents of the University of California.
.\" and Copyright (C) 2007, Michael Kerrisk <mtk.manpages@gmail.com>
.\" 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 <faith@cs.unc.edu>
.\" Modified 1995-04-15 by Michael Chastain <mec@shell.portal.com>:
.\"   Added 'getpgid'.
.\" Modified 1996-07-21 by Andries Brouwer <aeb@cwi.nl>
.\" Modified 1996-11-06 by Eric S. Raymond <esr@thyrsus.com>
.\" Modified 1999-09-02 by Michael Haardt <michael@moria.de>
.\" Modified 2002-01-18 by Michael Kerrisk <mtk.manpages@gmail.com>
.\" Modified 2003-01-20 by Andries Brouwer <aeb@cwi.nl>
.\" 2007-07-25, mtk, fairly substantial rewrites and rearrangements
.\" of text.
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH setpgid 2 "2 maja 2024 r." "Linux man\-pages 6.9.1" 
.SH NAZWA
setpgid, getpgid, setpgrp, getpgrp \- pobiera/ustawia grupę procesów
.SH BIBLIOTEKA
Standardowa biblioteka C (\fIlibc\fP, \fI\-lc\fP)
.SH SKŁADNIA
.nf
\fB#include <unistd.h>\fP
.P
\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
.P
\fBpid_t getpgrp(void);\fP                            /* wersja POSIX.1 */
\fB[[deprecated]] pid_t getpgrp(pid_t \fP\fIpid\fP\fB);\fP        /* wersja BSD */
.P
\fBint setpgrp(void);\fP                              /* wersja Systemu V */
\fB[[deprecated]] int setpgrp(pid_t \fP\fIpid\fP\fB, pid_t \fP\fIpgid\fP\fB);\fP  /* wersja BSD */
.fi
.P
.RS -4
Wymagane ustawienia makr biblioteki glibc (patrz \fBfeature_test_macros\fP(7)):
.RE
.P
\fBgetpgid\fP():
.nf
.\"    || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
    _XOPEN_SOURCE >= 500
        || /* Od glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
.fi
.P
\fBsetpgrp\fP() (POSIX.1):
.nf
.\"    || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
    _XOPEN_SOURCE >= 500
        || /* Od glibc 2.19: */ _DEFAULT_SOURCE
        || /* glibc <= 2.19: */ _SVID_SOURCE
.fi
.P
\fBsetpgrp\fP() (BSD), \fBgetpgrp\fP() (BSD):
.nf
    [Poniższe są dostępne wyłącznie przed glibc 2.19]
    _BSD_SOURCE &&
        ! (_POSIX_SOURCE || _POSIX_C_SOURCE || _XOPEN_SOURCE
            || _GNU_SOURCE || _SVID_SOURCE)
.fi
.SH OPIS
Wszystkie te interfejsy są dostępne w Linuksie i służą do pobierania i
ustawiania identyfikatora grupy procesu (process group ID \[em]
PGID). Preferowanymi, określonymi przez POSIX.1 sposobami są:
\fBgetpgrp\fP(void) do pobierania PGID procesu wywołującego oraz \fBsetpgid\fP()
do ustawiania PGID procesu.
.P
\fBsetpgid\fP() ustawia PGID procesu określonego przez \fIpid\fP na \fIpgid\fP. Jeśli
\fIpid\fP jest zerem, to używany jest PGID procesu wywołującego. Jeśli \fIpgid\fP
jest zerem, to PGID procesu określonego przez \fIpid\fP staje się taki sam, jak
jego identyfikator procesu. Jeśli \fBsetpgid\fP() jest używane do przeniesienia
procesu z jednej grupy procesów do innej (jak to robią niektóre powłoki
podczas tworzenia potoków), to obie grupy procesów muszą należeć do tej
samej sesji (zob. \fBsetsid\fP(2) i \fBcredentials\fP(7)). W tym przypadku \fIpgid\fP
określa istniejącą grupę procesów, do której zostanie przyłączony proces i
numer sesji dla tej grupy musi być taki sam, jak numer sesji dla
przyłączanego procesu.
.P
Wersja POSIX.1 \fBgetpgrp\fP(), która nie przyjmuje żadnych argumentów, zwraca
PGID procesu wywołujacego.
.P
\fBgetpgid\fP zwraca PGID procesu określonego przez \fIpid\fP. Jeśli \fIpid\fP jest
zerem, to używany jest identyfikator procesu, procesu wywołującego
(pobieranie PGID procesu innego niż wywołujący jest rzadko potrzebne i do
tego celu preferowany jest \fBgetpgrp\fP() POSIX.1).
.P
Wywołanie \fBsetpgrp\fP() w stylu Systemu\ V, które nie przyjmuje argumentów,
jest równoważne \fIsetpgid(0,\ 0)\fP.
.P
Specyficzne dla BSD wywołanie \fBsetpgrp\fP(), które przyjmuje argumenty \fIpid\fP
i \fIpgid\fP, jest funkcją opakowującą, która wywołuje
.P
.in +4n
.EX
setpgid(pid, pgid)
.EE
.in
.P
.\" 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.
Od glibc 2.19, specyficzna dla BSD funkcja \fBsetpgrp\fP() nie jest już
ujawniana przez \fI<unistd.h>\fP; wywołania powinny być zastąpione
wywołaniem \fBsetpgid\fP(), o którym mowa wyżej.
.P
Specyficzne dla BSD wywołanie \fBgetpgrp\fP(), które przyjmuje argument \fIpid\fP,
jest funkcją opakowującą, która wywołuje
.P
.in +4n
.EX
getpgid(pid)
.EE
.in
.P
Od glibc 2.19, specyficzna dla BSD funkcja \fBgetpgrp\fP() nie jest już
ujawniana przez \fI<unistd.h>\fP; wywołania powinny być zastąpione
wywołaniem \fBgetpgrp\fP() POSIX.1, nieprzyjmującym argumentów (jeśli chce się
pozyskać PGID wywołującego) lub wywołaniem \fBgetpgid\fP(), o którym mowa
wyżej.
.SH "WARTOŚĆ ZWRACANA"
Po pomyślnym zakończeniu \fBsetpgid\fP() i \fBsetpgrp\fP() zwracają zero. W
przypadku błędu zwracane jest \-1 i ustawiane \fIerrno\fP wskazując błąd.
.P
\fBgetpgrp\fP POSIX.1 zawsze zwraca PGID wywołującego.
.P
\fBgetpgid\fP() i specyficzne dla BSD \fBgetpgrp\fP() po pomyślnym zakończeniu
zwracają grupę procesów. W przypadku błędu zwracane jest \-1 i ustawiane
\fIerrno\fP wskazując błąd.
.SH BŁĘDY
.TP 
\fBEACCES\fP
Nastąpiła próba zmiany identyfikatora grupy procesów dla jednego z procesów
potomnych procesu wywołującego funkcję, zaś ów proces potomny wykonał już
\fBexecve\fP(2) (\fBsetpgid\fP, \fBsetpgrp\fP).
.TP 
\fBEINVAL\fP
\fIpgid\fP jest mniejsze niż 0 (\fBsetpgid\fP(), \fBsetpgrp\fP()).
.TP 
\fBEPERM\fP
Nastąpiła próba przeniesienia procesu do grupy procesów należącej do innej
sesji, lub próba zmiany identyfikatora grupy procesów dla jednego z procesów
potomnych procesu wywołującego funkcję, zaś ów proces potomny należy do
innej sesji, lub próba zmiany identyfikatora grupy procesów dla przywódcy
sesji (\fBsetpgid\fP(), \fBsetpgrp\fP()).
.TP 
\fBEPERM\fP
Docelowa grupa procesu nie istnieje.  (\fBsetpgid\fP(), \fBsetpgrp\fP()).
.TP 
\fBESRCH\fP
Dla \fBgetpgid\fP(): nie ma procesu o numerze \fIpid\fP. Dla \fBsetpgid\fP(): \fIpid\fP
nie jest ani procesem wywołującym, ani jego potomkiem.
.SH STANDARDY
.TP 
\fBgetpgid\fP()
.TQ
\fBsetpgid\fP()
.TQ
\fBgetpgrp\fP() (bez argumentów)
.TQ
\fBsetpgrp\fP() (bez argumentów)
POSIX.1\-2008 (lecz zob. HISTORIA).
.TP 
\fBsetpgrp\fP() (2 argumenty)
.TQ
\fBgetpgrp\fP() (1 argument)
Brak.
.SH HISTORIA
.TP 
\fBgetpgid\fP()
.TQ
\fBsetpgid\fP()
.TQ
\fBgetpgrp\fP() (bez argumentów)
POSIX.1\-2001.
.TP 
\fBsetpgrp\fP() (bez argumentów)
POSIX.1\-2001.  POSIX.1\-2008 oznacza je jako przestarzałe.
.TP 
\fBsetpgrp\fP() (2 argumenty)
.TQ
\fBgetpgrp\fP() (1 argument)
4.2BSD.
.SH UWAGI
Potomek utworzony przez \fBfork\fP(2) dziedziczy identyfikator grupy procesu od
swojego rodzica. Wartość PGID jest także zachowywana podczas \fBexecve\fP(2).
.P
Każda grupa procesów należy do pewnej sesji i każdy proces należy do sesji,
do której należy jego grupa procesów (zob. \fBcredentials\fP(7)).
.P
Sesja może mieć terminal kontrolujący. W każdym czasie jedna (i tylko jedna)
z grup procesów w sesji, może być pierwszoplanową grupą procesu dla
terminala; pozostałe grupy procesu są w tle. Jeśli z terminala wygenerowany
zostanie sygnał (np. przez wpisanie klucza przerwania, generującego sygnał
\fBSIGINT\fP), to sygnał ten trafia to pierwszoplanowej grupy procesu (opis
znaków generujących sygnały zawarto w podręczniku \fBtermios\fP(3)). Jedynie
pierwszoplanowa grupa procesu może czytać (\fBread\fP(2)) z terminala, jeśli
grupa procesu tła spróbuje dokonać odczytu (\fBread\fP(2)) z terminala, to do
grupy wysyłany jest sygnał ją zawieszający \[em] \fBSIGTTIN\fP. Do
pobierania/ustawiania pierwszoplanowej grupy procesu terminala
kontrolującego służą funkcje \fBtcgetpgrp\fP(3) i \fBtcsetpgrp\fP(3).
.P
Wywołania \fBsetpgid\fP() i \fBgetpgrp\fP() są używane przez programy takie jak
\fBbash\fP(1), do utworzenia grupy procesu w celu zaimplementowania kontroli
zadań powłoki.
.P
.\" exit.3 refers to the following text:
Jeśli przerwanie procesu spowoduje, że grupa procesów stanie się osierocona,
a wszystkie procesy nowoosieroconej grupy będą zatrzymane, to do każdego z
nich zostanie wysłany sygnał \fBSIGHUP\fP, po którym nastąpi wysłanie sygnału
\fBSIGCONT\fP. Osierocona grupa procesów to taka, w której rodzicem każdego
członka grupy procesów jest również członek grupy procesów lub członek grupy
procesów w innej sesji (zob. też \fBcredentials\fP(7)).
.SH "ZOBACZ TAKŻE"
\fBgetuid\fP(2), \fBsetsid\fP(2), \fBtcgetpgrp\fP(3), \fBtcsetpgrp\fP(3), \fBtermios\fP(3),
\fBcredentials\fP(7)
.PP
.SH TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika są:
Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl>
i
Michał Kułach <michal.kulach@gmail.com>
.
.PP
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach
licencji można uzyskać zapoznając się z
.UR https://www.gnu.org/licenses/gpl-3.0.html
GNU General Public License w wersji 3
.UE
lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
.PP
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy
dyskusyjnej
.MT manpages-pl-list@lists.sourceforge.net
.ME .
