Provided by: manpages-pt-br-dev_4.18.1-1_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
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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 ⟨debian-l10n-portuguese@lists.debian.org⟩.