C Uso da função setpgid

C Uso da função setpgid
Sempre que entramos no comando Shell, um novo processo é iniciado na sessão. O sistema então atribui um identificador de processo (PID) e um identificador de grupo de processo (PGID). O PID indica o ID do processo, enquanto o PGID descreve o ID do grupo de processo de qualquer tarefa atualmente executada pelo sistema ou ainda em processo. O setpgid () é uma função relevante para isso. Como o nome indica, é usado para adicionar ao grupo de processos existente ou, em outro caso, para criar um novo grupo de processos dentro da mesma sessão do processo de chamada. O ID do grupo para o processo do líder da sessão é sempre o mesmo. Não é alterado.

Esta função é usada para definir o PGID (ID do grupo de processo) dentro da sessão do processo de chamada para que possamos atribuir ou reatribuir o processo a diferentes grupos de processo. Para iniciar um novo grupo de processo com qualquer processo específico como líder de grupo, essa função também auxilia nesse aspecto. Este artigo destacará a criação e o funcionamento da função setpgid ().

Descrição

O ID do processo é um ID que existe na sessão de um processo de chamada. É o id cujo PGID que queremos mudar. Pode ser o chamador de setpgid () ou pode ser os filhos dele. O PID não pode ser o líder da sessão que deve ser alterado.

PGID, por outro lado, é o novo ID que queremos atribuir a esse processo específico especificado por PID. Se o PGID apontar para o grupo de processos existente, deve estar presente dentro da sessão do chamador. O novo grupo também é criado dentro da sessão do chamador.

Sintaxe

#incluir
int setpgid (pid_t, PGID);

A função setpgid () está presente no campo da biblioteca. E isso está incluído é por isso que estamos usando esta biblioteca aqui. Na parte do parâmetro da função, os dois IDs (PID, PGID) são escritos. Ambos pertencem ao ID do processo que queremos definir ou o que queremos entrar ou criar.

Fatos e recursos da função setpgid ()

Conforme discutido anteriormente, o setpgid () define o ID do grupo de um processo que o PID especifica para o ID do grupo de processo. Às vezes existe alguma circunstância em que todos os grupos de processos estão na mesma sessão. Isso ocorre quando um processo é levado de um grupo para outro através do setpgid (). Nesta situação, o PGID especifica o grupo de processos existente e se junta a ele.

Getpgid () é uma função como setpgid (). A sintaxe para ambos os processos é a mesma, incluindo chamadas de função. Como essas duas funções, getpgrp () e getpgid (0) da mesma maneira são equivalentes.

Usos de grupos de processo

Os grupos de processos trabalham para distribuir os sinais para encaminhar e atribuir os pedidos de entrada. Esses processos que possuem os mesmos grupos de processo são em primeiro plano e podem ser lidos, enquanto os outros processos serão bloqueados com um sinal se forem tentados para serem lidos.

Valor de retorno

Quando a chamada de função é realizada com sucesso e o processo é executado, o setpgid () e o setPgrp () retornam zero quando o erro ocorre e a função retorna -1. Depois que esse sinal de erro é passado. Getpgid () e getpgrp () estão associados ao setpgid (). Portanto, getpgid () retorna um grupo de processo quando feito com sucesso. Por erro, ele dá -1. Enquanto a função getpgrp () sempre fornece o grupo de processos atualmente em uso.

Para implementar alguns exemplos, use um editor de texto e um terminal Linux nesse aspecto. Escreveremos o código nos editores de texto e depois veremos o resultado no terminal Linux.

Exemplo 1

Em primeiro lugar, usaremos a mesma biblioteca descrita acima no guia, essencial para executar o código.

#incluir

No programa principal, o tipo de retorno é considerado um número inteiro. Não é nulo porque a função retornará o valor na forma de um número inteiro como IDs de processo. Usamos a estatura IF, pois precisamos aplicar uma verificação de erro. A primeira linha na instrução chama o setpgid () com o argumento de outra função getpid (). Esta função receberá o ID que queremos definir. Se o valor retornado for '-1', isso significa que ocorreu um erro para que o processo seja encerrado.

If (setpgid (getpid (), 0) == -1)

Isso então chamará novamente a mesma função setpgid para redefinir o ID padrão do processo. Mas se a condição for verdadeira, significa que o valor retornado é 0, então a função exige o ID do processo getpid () e o processo de processo Getpgrp () é chamado.

Salve o arquivo com a extensão C e consulte a saída vá para o terminal Linux; O código -fonte será compilado e depois executado através de um compilador GCC. Um arquivo de entrada é usado que é um código -fonte e um arquivo é usado para exibir a saída. 'arquivo. C 'é o nome de um arquivo.

$ GCC -O FILE.c
$./arquivo

O código é executado com sucesso quando executamos o código, e o ID do processo e os IDs do grupo de processo são obtidos. Ambos os IDs são os mesmos, o que significa que ambos estão na mesma sessão. Cada vez que você executa o código, os IDs resultantes serão diferentes.

Exemplo 2

Aqui vamos usar um garfo () no código -fonte. Como a função Fork () é usada para criar um novo processo, o processo infantil e esse processo infantil é executado simultaneamente com seu processo pai. Este é outro método de definir o ID e os IDs do grupo dos processos recém -criados. Primeiro, temos que inicializar uma variável para verificar se o erro existe ou não. Se existir, um sinal de erro será passado. E na parte mais se, se a função do garfo é chamada. Se o ID do processo for igual ao garfo retornar 0, isso significa que o novo processo é criado.

If ((pid = fork ()) == 0)

Todos os IDs de grupo de uma criança serão exibidos antes de esperar e depois dela. Da mesma forma, os IDs do processo pai serão exibidos; estes são obtidos através da função getpid (). No final, a função setpgid () será chamada se não for zero, então um erro será passado.

Agora veremos o resultado. Todos os IDs de processo e os IDs do grupo de processo serão exibidos. Usando o Fork (), os IDs de pai-filho são exibidos separadamente. Primeiro, o ID do processo de pai e filho é exibido antes da espera e depois de ele consecutivamente.

Conclusão

O artigo 'C: Uso da função setpgid' é um artigo que contém a descrição básica sobre a funcionalidade setpgid () e o ID do processo e a criação e o uso do ID do processo. Alguns erros são os motivos para interromper o processo podem ser os erros de pesquisa que não encontram nenhum ID existente, então o ID do processo do processo atual é atribuído automaticamente. Esperamos que esse esforço o ajude em seus termos de trabalho na linguagem de programação C.