Provided by: manpages-pt-br-dev_4.13-4_all bug

NOME

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

SINOPSE

       #include <sys/types.h>
       #include <unistd.h>

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

       pid_t getpgrp(void); /* versão POSIX.1 */
       pid_t getpgrp(pid_t pid); /* versão BSD */

       int setpgrp(void); /* versão System V */
       int setpgrp(pid_t pid, pid_t pgid); /* versão BSD */

   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
               || /* Desde o glibc 2.19: */ _DEFAULT_SOURCE
               || /* Glibc versões <= 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() and setpgrp() retornam zero. Caso contrário, -1 é devolvido e
       errno é selecionado adequadamente.

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

       getpgid(),  e  o  getpgrp()  específico  do  BSD,  retorna  o grupo de processo no caso de
       sucesso. Caso contrário, -1 é retornado e errno é definido adequadamente.

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.

DE ACORDO COM

       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)

COLOFÃO

       Esta página faz parte da versão 5.10 do projeto Linux man-pages. Uma descrição do projeto,
       informações sobre relatórios de bugs e a  versão  mais  recente  desta  página  podem  ser
       encontradas em https://www.kernel.org/doc/man-pages/.

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⟩.