Exemplo 01:
Abra e faça login no Ubuntu 20.04 e inicie o aplicativo chamado "Terminal" da área de atividade. Isso pode ser feito utilizando um simples atalho "ctrl+alt+t" na sua área de trabalho. Crie um arquivo do tipo C para implementar a chamada do sistema PRCTL (), execute o comando mostrado no snap embaixo.
$ touch prtcl.c
Após a criação, vamos abrir o arquivo com um editor GNU Nano, conforme a instrução mostrada.
$ nano Prtcl.c
Adicione o código mostrado na imagem Snap abaixo do arquivo GNU. O código contém os arquivos de cabeçalho necessários para o funcionamento de um código PRCTL (). Em seguida, criamos e definimos 4 threads chamados Process1, Process2, Process3 e Process4. Todos os 4 processos ou funções contêm o vazio como um parâmetro geral ou de assinatura, mas pode ser outra coisa. Como elaboramos antes, o primeiro parâmetro da chamada do sistema "PRCTL ()" mostrará o que temos a ver com a função de chamada. Então, chamamos o PRCTL () em todos os 4 métodos para definir o nome de um processo usando o argumento "pr_set_name". Após o sono de 2 segundos, a função de puts será executada para definir o nome de um processo.
Em seguida, declaramos um ponteiro do tipo de matriz chamado "FP" e seus elementos contêm os nomes de 4 métodos ou processos. O método principal declarou uma variável "id" aqui indica processos. O loop "for" foi usado aqui para criar um processo infantil para todos os processos pais usando o método "fork ()" e salvá -lo para variável "int". A declaração "se" foi usada para verificar se o "id" é 0. Se a condição atingir, ele imprimirá o número do processo filho, e a matriz "FP" será usada como um método para buscar o primeiro elemento, Processo 1 e assim por diante até que o loop termine. A chamada dos métodos dessa maneira faria com que seja executado todos os métodos definidos acima.
Compilar o arquivo primeiro.
$ GCC PRCTL.c
A execução do arquivo mostra a saída abaixo. O nome foi definido para cada processo.
$ ./a.fora
Exemplo 02:
Vamos ter outra ilustração do PRCTL. Vamos abrir o PRCTL.Arquivo C.
$ nano prctl.c
Depois que os cabeçalhos foram incluídos, o método "CAP_1" foi inicializado. O descritor de arquivo "F" foi definido e uma variável "res" foi inicializada com um valor "-1". Agora o descritor de arquivo será usado para obter a capacidade máxima do kernel. O descritor de arquivo abrirá o arquivo como somente leitura da pasta do kernel. Se o descritor de arquivo receber mais de 0 caracteres, a matriz "BUF" será definida com o tamanho 32. Dois números inteiros foram definidos e o método de leitura foi usado para obter os dados do buffer usando o descritor de arquivo e salvo na variável "num". Se o valor variável "num" for maior que 0, o valor indicado da variável "num" será inicializado como nulo. O método "sscanf" ligará o ponteiro "res" com a matriz "buf" e armazenará dentro da variável "r". É assim que a capacidade máxima pode ser obtida do kernel. Se o valor da variável "r" não for igual a 1, ele atualizará o valor de "res" com "-1" novamente. No final, a descrição foi fechada.
O segundo método, "CAP_2" foi usado para inicializar a variável de capacidade é igual a 0. O método PRCTL () usa "Pr_capbset_read" para ler a capacidade máxima. Se o valor da capacidade for maior que 0, será incrementado. Quando a capacidade chegar a 0, ele parará de incrementar e retornará o valor "cp" com um decréscimo de 1.
O método principal é obter a capacidade do “CAP_1” e CAP_2 e imprimi -lo na condição é atendido.
A compilação e execução deste arquivo mostram que o valor máximo de capacidade é 40.
$ GCC PRCTL.c
$ ./a.fora
Conclusão:
Neste guia, discutimos dois exemplos para elaborar o sistema PRCTL () Chamada em C. Isso o ajudará muito, pois demonstramos com dois argumentos diferentes.