Programação C

Codificação com fork e exec por exemplo em c

Codificação com fork e exec por exemplo em c
O título do nosso artigo contém duas funções diferentes da linguagem C que ocorrem durante a execução de qualquer programa em nosso sistema. Infelizmente, não há possibilidade de ocorrer mais de um programa por vez em C. Apenas uma única tarefa pode acontecer em um determinado momento, o que significa que não permite a execução de programas simultâneos. Faz com que você espere a conclusão de um processo para executar o outro. Para evitar este problema de solução de problemas, você pode precisar desenvolver seu programa de uma boa maneira, sendo um bom desenvolvedor. O Linux fork () é usado para superar a espera e permitir a simultaneidade em seu sistema. Ajuda a duplicar um novo processo e cria um novo chamando o processo duplicado. O novo processo é o processo filho, e o anterior é chamado de processo pai.

Considerando que a função exec () é usada para alterar o programa atual existente com o novo. Esta substituição é feita por meio de alterações no conteúdo de um programa ou arquivo. Portanto, a diferença entre fork e exec é que fork cria um novo processo a partir do processo existente, e exec é usado para substituir o programa existente criando um novo.

Pré-requisitos

Para executar qualquer programa c em seu sistema Linux, precisamos instalar alguns pré-requisitos nele. Vá para o terminal usando o método de atalho Ctrl + Alt + T. Agora escreva os seguintes comandos para instalar as páginas do manual.

$ sudo apt install manpages-dev

Irá instalar todas as páginas correspondentes.

Seguindo em frente, para executar um programa no Linux, você precisa instalar um compilador de código. Isso é usado para compilar o código e executá-lo. Para este propósito, iremos instalar repositórios GCC em nosso sistema.

$ sudo apt install GCC

Codificando com exec em c

Como instalamos as páginas do manual no Linux, usaremos o seguinte comando para ver a descrição do exec. A sintaxe de amostra primária é a seguinte:

Sintaxe

Exec (nome do caminho / arquivo, argv);

Aqui nós usamos o “unistd.h ”cabeçalho, pois contém todas as informações de famílias de funções exec.

$ man exec

Agora na imagem citada acima, você pode observar os tipos de executivos. Esta é a família de funções executivas. Cada um é para uma função diferente seguindo a mesma base, “exec.”

Exemplo: Agora, avançando, descreveremos a funcionalidade do exec com a ajuda de um exemplo. Pegaremos uma função de exec para demonstrar seu funcionamento, que é “execv.”Em primeiro lugar, vamos criar dois arquivos com a extensão“.c.”Após a sua criação, iremos escrever os respectivos códigos neles e executá-los para ver o resultado.

Considere um nome de arquivo “sample4.c ”. Abra-o e use o seguinte código. Neste código, usamos execv de uma maneira particular citada abaixo.

Execv (“./ sample4copy ”, args);

A primeira parte contém o novo caminho do diretório, e a segunda parte mostra a matriz de argumentos como um parâmetro que passamos.

Sample4.c

Em primeiro lugar, imprimimos o id do processo atual. Em segundo lugar, criamos uma matriz de caracteres com NULL no final para a terminação. Em terceiro lugar, chamamos a função sample4copy.

Sample4copy.c

Quando chamamos a função exec (), a imagem do processo é alterada. A imagem abaixo citada abaixo mostra o código de sample4copy.c.

Aqui, usamos apenas as instruções de impressão para obter o id do processo atual.

A saída dos respectivos códigos pode ser obtida usando os seguintes comandos.

$ GCC-o sample4 sample4.c
$ GCC -o sample4copy sample4copy.c
$ ./ sample4

Como descrevemos anteriormente, a palavra "GCC" é usada para compilar o código e, após a compilação, o código é executado com sucesso.

De acordo com a imagem, o PID da amostra 4.o arquivo c é mostrado primeiro como foi declarado antes da chamada exec. Então, depois que a função exec () é chamada, ambas as instruções de impressão do arquivo sample4copy.c é executado onde getpid () é usado para obter o id do processo.

Codificando com um garfo em c

A função fork () cria o processo filho a partir do processo pai. Ele também contém dois cabeçalhos, incluindo as informações da bifurcação nele.

Sintaxe:

Pid_t fork (vazio);

Podemos usar a página de manual para obter ajuda no uso

$ man fork

Exemplo: Agora considere um exemplo criando um arquivo “sample3.c ”. Vamos inserir o código dentro do arquivo. De acordo com o código, definimos o status do fork como forkrank.

Sample3.c

Usamos a declaração "if-else" para aplicar a condição. Comandos de impressão simples são declarados aqui para ajudar na compreensão do conceito fork (). Forkrank é declarado primeiro como 0 e, em seguida, -1. Com um fork (), agora existem dois processos que funcionam simultaneamente. A saída pode ser obtida usando o mesmo código, conforme usado acima no exemplo de exec.

$ GCC -o sample3.c
$./ sample3

A saída mostra que o processo filho é executado antes do pai quando o processo pai estava esperando. A função de espera implica que ela faz com que a função pai espere a menos que um de todos os processos filho seja encerrado.

Chamadas de sistema Fork e Exec coletivamente

Aqui, pegaremos dois arquivos chamados “amostra1.c ”e“ amostra2.c ”. Primeiro, abra o arquivo sampl1.ce escreva o código que está anexado abaixo na imagem. Usamos a chamada de sistema fork () aqui; quando o processo filho é criado, p será atribuído com 0. Ao usar a chamada de sistema exec, o sample1.c será substituído por sample2.c.

Sample1.c

Sample2.c

Semelhante aos exemplos discutidos acima, o arquivo sample2 conterá as instruções printf nele. Na amostra1.c, o primeiro comando de impressão é executado primeiro, então a função fork é chamada, quando p == 0, então a parte filha é executada e sample2.o arquivo c será executado. A saída conterá GCC para compilar os dois arquivos. Aqui, amostra 1 pai.id e sample2.c id é diferente porque eles são pais e filhos.

Conclusão

Neste artigo, usamos fork e exec separadamente e coletivamente para entender o uso e o conceito facilmente. Espero que este tutorial contenha conteúdo suficiente que o levará ao acesso para aumentar o seu conhecimento.

O cursor pula ou se move aleatoriamente enquanto digita no Windows 10
Se você descobrir que o cursor do mouse pula ou se move por conta própria, de forma automática e aleatória ao digitar em um laptop ou computador com W...
Como reverter a direção de rolagem do Mouse e Touchpads no Windows 10
Mouse e Touchpads não apenas torna a computação mais fácil, mas mais eficiente e menos demorada. Não podemos imaginar uma vida sem esses dispositivos,...
Como alterar o ponteiro do mouse e tamanho do cursor, cor e esquema no Windows 10
O ponteiro do mouse e o cursor no Windows 10 são aspectos muito importantes do sistema operacional. Isso também pode ser dito para outros sistemas ope...