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 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                                           15 setembro 2017                                      SETPGID(2)