Codificação com garfo e executivo pelo exemplo em c

Codificação com garfo e executivo pelo exemplo em c
O título do nosso artigo contém duas funções diferentes do idioma C que ocorrem ao executar qualquer programa em nosso sistema. Infelizmente, não há possibilidade de ocorrer mais de um programa de cada vez em C. Apenas uma única tarefa pode acontecer em um determinado momento, o que significa que não permite que programas simultâneos sejam executados. Isso faz com que você espere a conclusão de um processo para executar o outro. Para evitar esse problema de solução de problemas, pode ser necessário desenvolver seu programa de uma maneira boa, sendo um bom desenvolvedor. 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 infantil 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 fazendo emendas ao conteúdo de um programa ou um arquivo. Portanto, a dissimilaridade entre fork e executão é que o garfo cria um novo processo a partir do processo existente, e o EXEC é usado para substituir o programa existente, criando um novo.

Pré -requisitos

Para executar qualquer programa C no 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 homem.

$ sudo apt install manpages-dev

Ele instalará todas as páginas correspondentes.

Avançando, para executar um programa no Linux, você precisa instalar um compilador de código. Que é usado para compilar o código e executá -lo. Para esse fim, instalaremos repositórios GCC em nosso sistema.

$ sudo apt install gcc

Codificação com Exec em C

Como instalamos as páginas MAN no Linux, usaremos o seguinte comando para ver a descrição sobre executivos. A sintaxe da amostra primária é a seguinte:

Sintaxe

EXEC (nome do caminho/arquivo, argv);

Aqui usamos o “unistd.H ”Cabeçalho, pois contém todas as informações da função Famílias de Exec.

$ MAN EXEC

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

Exemplo: Agora, avançando mais, descreveremos a funcionalidade do executivo com a ajuda de um exemplo. Tomaremos uma função do EXEC para demonstrar seu trabalho, que é “Execv.”Em primeiro lugar, criaremos dois arquivos com a extensão de“.c.”Após a criação deles, escreveremos os respectivos códigos neles e os executaremos para ver o resultado.

Considere um nome de arquivo “Sample4.C ”. Abra -o e use o seguinte código. Neste código, usamos o Execv de uma maneira específica 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.

Amostra4.c

Primeiro de tudo, imprimimos o ID do processo atual. Em segundo lugar, criamos uma matriz de personagens tendo nulo no final para o término. Em terceiro lugar, chamamos a função Sample4Copy.

Sample4copy.c

Quando chamamos a função EXEC (), a imagem do processo é alterada. Abaixo, a imagem citada abaixo mostra o código do Sample4Copy.c.

Aqui usamos apenas declaraçõ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 amostra4.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 de Sample4.O arquivo C é mostrado primeiro como foi declarado antes da chamada EXEC. Então, depois que a função EXEC () é chamada, tanto as declarações de impressão da amostra de arquivo4copy.c é executado onde getpid () é usado para obter o ID do processo.

Codificação com um garfo em c

A função Fork () cria o processo infantil do processo pai. Ele também contém dois cabeçalhos, incluindo as informações do garfo.

Sintaxe:

Pid_t fork (void);

Podemos usar a página do homem 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 garfo como forkrank.

Amostra3.c

Usamos a declaração "if-else" para aplicar a condição. Comandos de impressão simples são declarados aqui para ajudar no entendimento do conceito de garfo (). Forkrank é declarado pela primeira vez como 0 e depois -1. Com um garfo (), agora existem dois processos que estão funcionando simultaneamente. A saída pode ser obtida usando o mesmo código, conforme usado acima no Exec Exemplo.

$ 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 faz com que a função pai espere, a menos que um de todos os processos infantis seja encerrado.

O sistema de bifurcação e Exec chama coletivamente

Aqui vamos levar dois arquivos chamados “Sample1.C "e" Sample2.C ”. Primeiro, abra o arquivo sampl1.c e escreva o código que é anexado abaixo na imagem. Utilizamos o System-Call aqui; Quando o processo infantil for criado, P será atribuído com 0. Enquanto usa o System-Call Exec, o Sample1.C será substituído por Sample2.c.

Amostra1.c

Amostra2.c

Semelhante aos exemplos discutidos acima, o arquivo Sample2 conterá as instruções Printf. Na amostra1.C, o primeiro comando de impressão é executado primeiro, depois a função do garfo é chamada, quando p == 0, então a parte da criança é executada e amostra2.O arquivo C será executado. A saída conterá o GCC para compilar os dois arquivos. Aqui Sample dos pais1.c id e amostra2.c id é diferente porque são pais e filhos.

Conclusão

Neste artigo, usamos o garfo e o executivo separadamente e coletivamente para entender o uso e o conceito facilmente. Espero que este tutorial contenha conteúdo suficiente que levará ao acesso à escalada de seu conhecimento.