Provided by: manpages-pt-br-dev_4.21.0-2_all bug

NOME

       setpgid, getpgid, setpgrp, getpgrp - define/obtém o grupo do processo

BIBLIOTECA

       Biblioteca C Padrão (libc, -lc)

SINOPSE

       #include <unistd.h>

       int setpgid(pid_t pid, pid_t pgid);
       pid_t getpgid(pid_t pid);

       pid_t getpgrp(void);                            /* POSIX.1 version */
       [[deprecated]] pid_t getpgrp(pid_t pid);        /* BSD version */

       int setpgrp(void);                              /* System V version */
       [[deprecated]] int setpgrp(pid_t pid, pid_t pgid);  /* BSD version */

   Requisitos de macro de teste de recursos para o glibc (consulte feature_test_macros(7)):

       getpgid():
           _XOPEN_SOURCE >= 500
               || /* Desde o glibc 2.12: */ _POSIX_C_SOURCE >= 200809L

       setpgrp() (POSIX.1):
           _XOPEN_SOURCE >= 500
               || /* Since glibc 2.19: */ _DEFAULT_SOURCE
               || /* glibc <= 2.19: */ _SVID_SOURCE

       setpgrp() (BSD), getpgrp() (BSD):
           [Estes estão disponíveis apenas antes do glibc 2.19]
           _BSD_SOURCE &&
               ! (_POSIX_SOURCE || _POSIX_C_SOURCE || _XOPEN_SOURCE
                   || _GNU_SOURCE || _SVID_SOURCE)

DESCRIÇÃO

       Todas  essas  interfaces  estão  disponíveis  no Linux e são usadas para obter e definir o ID do grupo de
       processos (PGID) de um processo. As formas preferidas, especificadas por  POSIX.1,  de  fazer  isso  são:
       getpgrp(void),  para  recuperar  o  PGID  do  processo de chamada; e setpgid(), para definir o PGID de um
       processo.

       setpgid() define o PGID do processo especificado por pid para pgid. Se pid é zero, a ID  de  processo  do
       processo atual é usado. Se pgid é zero, o PGID do processo especificado por pid é tornado o mesmo que seu
       ID de processo. Se setpgid() é usado para mover processo de um grupo de processo para outro (como é feito
       por  alguns  shells ao criar canais de processamento), ambos grupos de processo devem ser partes da mesma
       sessão (consulte setsid(2) e credentials(7)).  Neste  caso,  o  pgid  especifica  um  grupo  de  processo
       existente  a ser unido e o ID da sessão daquele grupo dever combinar com a ID da sessão do processo que é
       unido.

       A versão POSIX.1 de getpgrp(), que não leva argumentos, retorna o PGID do processo de chamada.

       getpgid() retorna o PGID do processo especificado por pid. Se pid é zero, o ID de  processo  do  processo
       atual  é  usada.  (Recuperar  o  PGID  de  um  processo diferente do chamador raramente é necessário, e o
       getpgrp() POSIX.1 é o preferido para essa tarefa.)

       O setpgrp() do estilo System V, que leva nenhum argumento, é equivalente a setpgid(0, 0).

       A chamada setpgrp() específica do BSD, que leva os argumentos pid e pgid, é uma  função  de  wrapper  que
       chama

           setpgid(pid, pgid)

       Desde  o  glibc 2.19, a função setpgrp() específica do BSD não é mais exposta por <unistd.h>; as chamadas
       devem ser substituídas pela chamada setpgid() mostrada acima.

       A chamada getpgrp() específica do BSD, que leva um único argumento pid, é uma função de wrapper que chama

           getpgid(pid)

       Desde o glibc 2.19, a função getpgrp() específica do BSD não é mais exposta por <unistd.h>;  as  chamadas
       devem  ser  substituídas  por  chamadas para getpgrp() POSIX.1 que não leva argumentos (se a intenção for
       obter o PGID do chamador), ou com a chamada getpgid() mostrada acima.

VALOR DE RETORNO

       Em caso de sucesso, setpgid() e setpgrp() retornam zero. Em caso de  erro,  -1  é  retornado  e  errno  é
       definido para indicar o erro.

       O getpgrp() POSIX.1 sempre retorna o PGID do chamador.

       getpgid(),  e  o getpgrp() específico do BSD, retornam o grupo de processo em caso de sucesso. Em caso de
       erro, -1 é retornado e errno é definido para indicar o erro.

ERROS

       EACCES Foi feita uma tentativa de alterar o ID do grupo de processo de  um  dos  filhos  do  processo  de
              chamada e o filho já havia executado um execve(2) (setpgid(), setpgrp()).

       EINVAL pgid é menor que 0 (setpgid(), setpgrp()).

       EPERM  Foi  feita  uma tentativa de mover um processo para um grupo de processos em uma sessão diferente,
              ou para alterar o ID do grupo de processos de um dos filhos do  processo  de  chamada  e  o  filho
              estava  em  uma sessão diferente, ou para alterar o ID do grupo de processos de um líder de sessão
              (setpgid(), setpgrp()).

       ESRCH  Para getpgid(): pid não corresponde a nenhum processo. Para setpgid(): pid não  é  o  processo  de
              chamada e não é filho do processo de chamada.

PADRÕES

       setpgid() e a versão de getpgrp() com nenhum argumento em conformidade com POSIX.1-2001.

       POSIX.1-2001 também especifica getpgid() e a versão de setpgrp() que não aceita argumentos. (POSIX.1-2008
       marca esta especificação de setpgrp() como obsoleta.)

       A  versão  de  getpgrp()  com  um  argumento  e a versão de setpgrp() que leva dois argumentos derivam de
       4.2BSD, e não são especificados por POSIX.1.

NOTAS

       Um filho criado por meio de fork(2) herda o ID do grupo de processo de seu pai. O PGID é preservado em um
       execve(2).

       Cada grupo de processo é um membro de uma sessão e cada processo é um membro da sessão da qual seu  grupo
       de processo é um membro. (Veja credentials(7).)

       Uma sessão pode ter um terminal de controle. A qualquer momento, um (e apenas um) dos grupos de processos
       na  sessão  pode  ser  o  grupo  de  processos  em primeiro plano para o terminal; os grupos de processos
       restantes estão em segundo plano. Se um sinal é gerado a partir do terminal  (por  exemplo,  digitando  a
       tecla de interrupção para gerar SIGINT), esse sinal é enviado para o grupo de processo de primeiro plano.
       (Consulte  termios(3) para uma descrição dos caracteres que geram sinais.) Apenas o grupo de processos de
       primeiro plano pode usar read(2) a partir do terminal; se um grupo de processo  em  segundo  plano  tenta
       usar  read(2)  a  partir  do  terminal, então o grupo recebe um sinal SIGTTIN, que o suspende. As funções
       tcgetpgrp(3) e tcsetpgrp(3) são usadas para obter/definir o grupo  de  processos  de  primeiro  plano  do
       terminal de controle.

       As  chamadas setpgid() e getpgrp() são usadas por programas como bash(1) para criar grupos de processos a
       fim de implementar o controle de trabalho do shell.

       Se o término de um processo faz com que um grupo de processo se torne órfão,  e  se  qualquer  membro  do
       grupo de processo recém-órfão for interrompido, um sinal SIGHUP seguido por um sinal SIGCONT será enviado
       para cada processo no grupo de processo recentemente órfão. Um grupo de processos órfão é aquele em que o
       pai de cada membro do grupo de processos também é membro do grupo de processos ou é membro de um grupo de
       processos em uma sessão diferente (consulte também credenciais(7)).

VEJA TAMBÉM

       getuid(2), setsid(2), tcgetpgrp(3), tcsetpgrp(3), termios(3), credentials(7)

TRADUÇÃO

       A   tradução   para   português   brasileiro   desta  página  man  foi  criada  por  André  Luiz  Fassone
       <lonely_wolf@ig.com.br>,  Marcelo  Pereira   da   Silva   <marcelo@pereira.com>   e   Rafael   Fontenelle
       <rafaelff@gnome.org>.

       Esta  tradução  é  uma documentação livre; leia a Licença Pública Geral GNU Versão 3 ou posterior para as
       condições de direitos autorais.  Nenhuma responsabilidade é aceita.

       Se você encontrar algum erro na tradução  desta  página  de  manual,  envie  um  e-mail  para  a lista de
       discussão de tradutores.

Linux man-pages 6.03                            5 fevereiro 2023                                      setpgid(2)