Función execvp en c

Función execvp en c

La función execvp () pertenece a la familia exec. En el tema de hoy, discutiremos las características y la aplicación de la función execvp () bajo la familia exec.

La función de la familia ejecutiva en el lenguaje C nos ayuda a ejecutar otros programas dentro de nuestro programa. Para hacer eso desde mi programa, utilizamos un conjunto de funciones llamado Exec Family of Function y estos están en el programa Linux.

Aplicación de la función ExecVP ()

Si queremos ejecutar un ping del programa, podemos aplicar esto a través de la función EXECVP (). Para esto, tenemos que usar una matriz. La letra 'V' utilizada para la función Execvp () significa Vector.

Sintaxis

La función de sintaxis para execvp ():

int execvp (const char *file, char *const)

Aquí, el primer parámetro es un puntero de archivo que apunta un archivo que se ejecutará en el programa.

El segundo parámetro es una constante de puntero que es de carácter de tipo y se utilizará como terminador nulo.

Programación Ejemplo 1

Aquí, veremos cómo funciona realmente la función EXCVP () en nuestro programa.

#incluir
#incluir
#incluir
#Include // incluyendo este archivo para la plataforma Linux
int main (int argc, char *argv [])

char *ar [10] = "ping", "Google.com ","-C10 ", nulo; // Declaración e inicialización de una matriz
execvp ("ping", ar);
printf ("No obtiene ninguna respuesta como la función EXECVP () se ejecuta primero \ n"
// Esta declaración no se ejecuta porque execvp () toma control sobre el programa si EXECVP devolvió el éxito.
regresar 0;

Producción

Explicación
En este ejemplo de programación, si queremos hacer ping el "Google.com ”con la ayuda de la función execvp () En la plataforma Linux, debemos incluir un archivo de encabezado llamado UNISTD.h en nuestro programa.

Para ejecutar la función ExecVP (), tenemos que declarar una matriz (en realidad matriz de cadena) llamada AR [] e inicializar algunos valores como "Ping", "Google.com ”y nulo.

Ahora, si intentamos pasar la variedad de argumentos dentro de la función paréntesis de la función EXCVP (), notaremos que está haciendo ping a Google.com como salida.

Programación Ejemplo 2

Aquí mostramos otra aplicación de la función ExecVP ().

#Include // incluyendo este archivo para la plataforma Linux
#incluir
#incluir
#incluir
int main ()

char *cmd = "CD";
char *arr_ls [] = "cd", "/root/nada", null; // Declaración e inicialización de una matriz
errno = 0;
int id = execvp (cmd, arr_ls);
if (id == -1)

printf ("\ nhere es el número de error devuelto por execvp:%d \ n", errno);
if (errno == 2)
printf ("!!El fichero o directorio no existe!!\norte");
demás
perror ("execvp");

printf ("Si ExecVP devuelve el éxito, no veremos esta línea, veremos esta línea. \ n ");
regresar 0;

Producción

Explicación
En este ejemplo de programación, veremos si la función ExecVP () devolverá el valor falso. Si la función execvp () devuelve el valor falso, entonces imprimió el valor de "Errno " que es 2 e imprime el mensaje que "El fichero o directorio no existe".

Si la función EXECVP () devuelve el valor real, cualquier declaración después de execVP no se ejecutará. Como sabemos por las características de la función ExecVP (), no se ejecuta ninguna línea cuando la función Execvp () toma el control del programa.

Programación Ejemplo 3

En este ejemplo de programación, veremos la aplicación importante de la función ExecVP () relacionada con la bifurcación o el proceso.

#incluir
#incluir
int main ()

char *cmd = "ls";
char *arg_ls [] = "ls", "-l", null;
printf ("Ejemplo de la ejecución de una declaración antes de que se invoque execvp () \ n");
printf ("estamos introduciendo un proceso más que indica un bifurcado \ n");
se introduce if (fork () == 0) // el proceso infantil que está controlado por "LS-L"

int sts_cd = execvp (cmd, arg_ls);
printf ("Esta declaración se ejecuta eso significa que hay un problema ejecutando el comando \ n");
if (sts_cd == -1)

printf ("Error EXECVP! \ n ");
regresar 1;


else // programa matriz ejecutado aquí

printf ("Esta declaración se ejecuta eso significa volver al programa principal \ n");

regresar 0;

Producción

Explicación
Al igual que todas las funciones de la familia EXEC en C, la función EXECVP () puede ejecutar otros programas dentro de nuestro programa.

En este ejemplo de programación, declaramos una matriz de caracteres o un nombre de cadena arg_ls []. Dentro de esta cadena, inicializamos algunos valores y nulo también. Luego, llamamos a otro proceso llamado Fork ().

Aquí, la función execvp () devuelve el valor real. Entonces, la función Fork () puede ejecutar con éxito su acción. Si no, entonces irá al programa principal.

Programación Ejemplo 4

Aquí veremos otra característica de la función ExecVP ().

#incluir
#incluir
int main ()

char *cmd = "CD";
char *arg_ls [] = "cd", "/root/bam", null;
printf ("Ejemplo de la ejecución de una declaración antes de que se invoque execvp () \ n");
printf ("estamos introduciendo un proceso más que indica un bifurcado \ n");
se introduce if (fork () == 0) // el proceso infantil que está controlado por "LS-L"

int sts_cd = execvp (cmd, arg_ls);
printf ("Esta declaración se ejecuta eso significa que hay un problema ejecutando el comando \ n");
if (sts_cd == -1)

printf ("Error EXECVP! \ n ");
regresar 1;


else // programa matriz ejecutado aquí

printf ("Esta declaración se ejecuta eso significa volver al programa principal \ n");

regresar 0;

Producción

Explicación
El ejemplo de programación anterior es la versión modificada del ejemplo de programación 3. Aquí, veremos si Function Fork () devolverá '0'. Luego, el proceso infantil ejecutará su código y está controlado por "LS-" L dominio. El valor que devolverá execvp () se asigna a una variable nombrada sts_cd. Si sts_cd Verá el valor -1, entonces entenderemos que es un error de función execvp (). De lo contrario, esta función toma el control sobre el resto del programa.

Conclusión

Desde la discusión anterior sobre la implementación de ExecVP () en la familia EXEC, hemos llegado a la conclusión de que reemplaza una imagen de proceso con una nueva imagen en nuestra RAM (memoria de acceso aleatorio) para ejecutar el nuevo proceso. En realidad, esta función ayuda a nuestro sistema operativo a administrar todos los procesos que están listos para ejecutar el procesador con menos tiempo.