setpgid(2) System Calls Manual setpgid(2) NOME setpgid, getpgid, setpgrp, getpgrp - define/obtem o grupo do processo BIBLIOTECA Biblioteca C Padrao (libc, -lc) SINOPSE #include int setpgid(pid_t pid, pid_t pgid); pid_t getpgid(pid_t pid); pid_t getpgrp(void); /* versao POSIX.1 */ [[deprecated]] pid_t getpgrp(pid_t pid); /* versao BSD */ int setpgrp(void); /* Versao System V */ [[deprecated]] int setpgrp(pid_t pid, pid_t pgid); /* Versao 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 <= 2.19: */ _SVID_SOURCE setpgrp() (BSD), getpgrp() (BSD): [Estes estao disponiveis apenas antes do glibc 2.19] _BSD_SOURCE && ! (_POSIX_SOURCE || _POSIX_C_SOURCE || _XOPEN_SOURCE || _GNU_SOURCE || _SVID_SOURCE) DESCRICAO Todas essas interfaces estao disponiveis no Linux e sao 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 sao: 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 e zero, a ID de processo do processo atual e usado. Se pgid e zero, o PGID do processo especificado por pid e tornado o mesmo que seu ID de processo. Se setpgid() e usado para mover processo de um grupo de processo para outro (como e feito por alguns shells ao criar canais de processamento), ambos grupos de processo devem ser partes da mesma sessao (consulte setsid(2) e credentials(7)). Neste caso, o pgid especifica um grupo de processo existente a ser unido e o ID da sessao daquele grupo dever combinar com a ID da sessao do processo que e unido. A versao POSIX.1 de getpgrp(), que nao leva argumentos, retorna o PGID do processo de chamada. getpgid() retorna o PGID do processo especificado por pid. Se pid e zero, o ID de processo do processo atual e usada. (Recuperar o PGID de um processo diferente do chamador raramente e necessario, e o getpgrp() POSIX.1 e o preferido para essa tarefa.) O setpgrp() do estilo System V, que leva nenhum argumento, e equivalente a setpgid(0, 0). A chamada setpgrp() especifica do BSD, que leva os argumentos pid e pgid, e uma funcao de wrapper que chama setpgid(pid, pgid) Desde o glibc 2.19, a funcao setpgrp() especifica do BSD nao e mais exposta por ; as chamadas devem ser substituidas pela chamada setpgid() mostrada acima. A chamada getpgrp() especifica do BSD, que leva um unico argumento pid, e uma funcao de wrapper que chama getpgid(pid) Desde o glibc 2.19, a funcao getpgrp() especifica do BSD nao e mais exposta por ; as chamadas devem ser substituidas por chamadas para getpgrp() POSIX.1 que nao leva argumentos (se a intencao 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 e retornado e errno e definido para indicar o erro. O getpgrp() POSIX.1 sempre retorna o PGID do chamador. getpgid(), e o getpgrp() especifico do BSD, retornam o grupo de processo em caso de sucesso. Em caso de erro, -1 e retornado e errno e 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 ja havia executado um execve(2) (setpgid(), setpgrp()). EINVAL pgid e menor que 0 (setpgid(), setpgrp()). EPERM Foi feita uma tentativa de mover um processo para um grupo de processos em uma sessao diferente, ou para alterar o ID do grupo de processos de um dos filhos do processo de chamada e o filho estava em uma sessao diferente, ou para alterar o ID do grupo de processos de um lider de sessao (setpgid(), setpgrp()). EPERM O grupo de processos alvo nao existe. (setpgid(), setpgrp()). ESRCH Para getpgid(): pid nao corresponde a nenhum processo. Para setpgid(): pid nao e o processo de chamada e nao e filho do processo de chamada. PADROES getpgid() setpgid() getpgrp() (sem argumento) POSIX.1-2024. setpgrp() getpgrp() (1 argumento) Nenhum. HISTORICO getpgid() setpgid() getpgrp() (sem argumento) POSIX.1-2001. setpgrp() (sem argumento) POSIX.1-2001. Descontinuado no POSIX.1-2008. Removido no POSIX.1-2024. setpgrp() (2 argumentos) getpgrp() (1 argumento) 4.2BSD. NOTAS Um filho criado por meio de fork(2) herda o ID do grupo de processo de seu pai. O PGID e preservado em um execve(2). Cada grupo de processo e um membro de uma sessao e cada processo e um membro da sessao da qual seu grupo de processo e um membro. (Veja credentials(7).) Uma sessao pode ter um terminal de controle. A qualquer momento, um (e apenas um) dos grupos de processos na sessao pode ser o grupo de processos em primeiro plano para o terminal; os grupos de processos restantes estao em segundo plano. Se um sinal e gerado a partir do terminal (por exemplo, digitando a tecla de interrupcao para gerar SIGINT), esse sinal e enviado para o grupo de processo de primeiro plano. (Consulte termios(3) para uma descricao 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, entao o grupo recebe um sinal SIGTTIN, que o suspende. As funcoes tcgetpgrp(3) e tcsetpgrp(3) sao usadas para obter/definir o grupo de processos de primeiro plano do terminal de controle. As chamadas setpgid() e getpgrp() sao usadas por programas como bash(1) para criar grupos de processos a fim de implementar o controle de trabalho do shell. Se o termino de um processo faz com que um grupo de processo se torne orfao, e se qualquer membro do grupo de processo recem-orfao for interrompido, um sinal SIGHUP seguido por um sinal SIGCONT sera enviado para cada processo no grupo de processo recentemente orfao. Um grupo de processos orfao e aquele em que o pai de cada membro do grupo de processos tambem e membro do grupo de processos ou e membro de um grupo de processos em uma sessao diferente (consulte tambem credenciais(7)). VEJA TAMBEM getuid(2), setsid(2), tcgetpgrp(3), tcsetpgrp(3), termios(3), credentials(7) TRADUCAO A traducao para portugues brasileiro desta pagina man foi criada por Andre Luiz Fassone , Marcelo Pereira da Silva e Rafael Fontenelle . Esta traducao e uma documentacao livre; leia a Licenca Publica Geral GNU Versao 3 ou posterior para as condicoes de direitos autorais. Nenhuma responsabilidade e aceita. Se voce encontrar algum erro na traducao desta pagina de manual, envie um e-mail para a lista de discussao de tradutores . Linux man-pages 6.18 8 fevereiro 2026 setpgid(2)