.\" -*- coding: UTF-8 -*- .\" Copyright 1983-1991, Regents of the University of California. .\" Copyright 2007, Michael Kerrisk .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: BSD-4-Clause-UC .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH setpgid 2 "8 lutego 2026 r." "Linux man\-pages 6.17" .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 \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\f[R] /* 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\f[R] /* 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\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\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) POSIX.1\-2024. .TP \fBsetpgrp\fP() .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. Oznaczone jako przestarzałe w POSIX.1\-2008. Usunięte w POSIX.1\-2024. .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 Tłumaczenie niniejszej strony podręcznika: Andrzej Krzysztofowicz i Michał Kułach . .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 .