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.