Função EXECVP em C

Função EXECVP em C

A função EXECVP () pertence à família EXEC. No tópico de hoje, discutiremos as características e a aplicação da função EXECVP () sob a família EXEC.

A função da família EXEC no idioma C nos ajuda a executar outros programas dentro do nosso programa. Para fazer isso de dentro do meu programa, usamos um conjunto de funções chamado Exec Family of Function e estes estão no programa Linux.

Aplicação da função EXECVP ()

Se queremos executar um ping de programa, podemos aplicar isso através da função Execvp (). Para isso, temos que usar a matriz. A letra 'V' usada para Execvp () Função significa Vector.

Sintaxe

A sintaxe Função para Execvp ():

int Execvp (arquivo const char *, char *const)

Aqui, o primeiro parâmetro é um ponteiro de arquivo que aponta um arquivo que deve ser executado no programa.

O segundo parâmetro é uma constante de ponteiro que é personagem no tipo e será usado como terminador nulo.

Exemplo de programação 1

Aqui, veremos como a função Execvp () realmente funciona em nosso programa.

#incluir
#incluir
#incluir
#include // incluindo este arquivo para plataforma Linux
int main (int argc, char *argv [])

char *ar [10] = "ping", "google.com ","-c10 ", null; // declaração e inicialização de uma matriz
Execvp ("ping", AR);
printf ("Não recebe nenhuma resposta, pois a função EXECVP () executa primeiro \ n"
// Esta declaração não é executada porque Execvp () assume o controle do programa se o Execvp retornará o sucesso.
retornar 0;

Saída

Explicação
Neste exemplo de programação, se queremos pingar o “Google.com ”Com a ajuda da função Execvp () na plataforma Linux, precisamos incluir um arquivo de cabeçalho chamado Unistd.H em nosso programa.

Para executar a função EXECVP (), precisamos declarar uma matriz (na verdade a matriz de string) chamada AR [] e inicializamos alguns valores como "ping", "Google.com ”e nulo.

Agora, se tentarmos passar a variedade de argumentos dentro da função entre parênteses da Execvp (), notaremos que está pingando no Google.com como uma saída.

Exemplo de programação 2

Aqui mostramos outro aplicativo da função Execvp ().

#include // incluindo este arquivo para plataforma Linux
#incluir
#incluir
#incluir
int main ()

char *cmd = "cd";
char *arr_ls [] = "cd", "/root/nada", null; // declaração e inicialização de uma matriz
errno = 0;
int id = Execvp (cmd, arr_ls);
if (id == -1)

printf ("\ nhe nhere é o número de erro retornado por execvp:%d \ n", errno);
if (errno == 2)
printf ("!!Não existe tal arquivo ou diretório!!\ n ");
outro
perror ("Execvp");

printf ("Se o Execvp retornar sucesso, não veremos essa linha mais, veremos esta linha. \ n ");
retornar 0;

Saída

Explicação
Neste exemplo de programação, veremos se a função EXECVP () retornará o valor falso. Se a função Execvp () retornar um valor falso, ele imprimirá o valor de “errorno ” que é 2 e imprima a mensagem que "Não existe tal arquivo ou diretório".

Se a função EXECVP () retornar o valor verdadeiro, qualquer instrução após o EXECVP não será executada. Como sabemos pelas características da função EXECVP (), nenhuma linha é executada quando a função EXECVP () assume o controle do programa.

Exemplo de programação 3

Neste exemplo de programação, veremos a importante aplicação da função EXECVP () relacionada ao garfo () ou processo.

#incluir
#incluir
int main ()

char *cmd = "ls";
char *arg_ls [] = "ls", "-l", null;
printf ("Exemplo da execução de uma declaração antes do Execvp () é invocado \ n");
printf ("Estamos introduzindo mais um processo que indica um garfo \ n");
if (fork () == 0) // Processo infantil é introduzido, que é controlado por "ls-l"

int sts_cd = Execvp (cmd, arg_ls);
printf ("Esta declaração executa que significa que há um problema executando o comando \ n");
if (sts_cd == -1)

printf ("Erro EXECVP! \ n ");
retornar 1;


else // Programa de pais executado aqui

printf ("Esta declaração é executada que significa voltar ao programa principal \ n");

retornar 0;

Saída

Explicação
Como todas as funções da família EXEC em C, a função EXECVP () pode executar outros programas dentro do nosso programa.

Neste exemplo de programação, declaramos uma matriz de caracteres ou um nome de string arg_ls []. Dentro desta string, inicializamos alguns valores e nulos também. Então, chamamos outro processo chamado Fork ().

Aqui, a função EXECVP () retorna o True Value. Portanto, a função Fork () pode executar com sucesso sua ação. Caso contrário, então ele irá para o programa principal.

Exemplo de programação 4

Aqui veremos outro recurso da função Execvp ().

#incluir
#incluir
int main ()

char *cmd = "cd";
char *arg_ls [] = "cd", "/root/bam", null;
printf ("Exemplo da execução de uma declaração antes do Execvp () é invocado \ n");
printf ("Estamos introduzindo mais um processo que indica um garfo \ n");
if (fork () == 0) // Processo infantil é introduzido, que é controlado por "ls-l"

int sts_cd = Execvp (cmd, arg_ls);
printf ("Esta declaração executa que significa que há um problema executando o comando \ n");
if (sts_cd == -1)

printf ("Erro EXECVP! \ n ");
retornar 1;


else // Programa de pais executado aqui

printf ("Esta declaração é executada que significa voltar ao programa principal \ n");

retornar 0;

Saída

Explicação
O exemplo de programação acima é a versão modificada do Exemplo de Programação 3. Aqui, veremos se a função Fork () retornará '0'. Então, o processo infantil executará seu código e é controlado por “LS-“ L comando. O valor que retornará Execvp () é atribuído a uma variável nomeada STS_CD. Se STS_CD verá o valor -1, então entenderemos que é um erro da função EXECVP (). Caso contrário, esta função assume o controle do restante do programa.

Conclusão

A partir da discussão acima sobre a implementação do EXECVP () na família EXEC, chegamos à conclusão de que ele substitui uma imagem de processo por uma nova imagem em nossa RAM (memória de acesso aleatório) para executar o novo processo. Na verdade, essa função ajuda nosso sistema operacional a gerenciar todos os processos que estão prontos para executar pelo processador com menos tempo.