“Conocimiento Sistemas>unix

¿Qué es la llamada al sistema execlp?

2015/10/22
La llamada al sistema `execlp()` en Linux se utiliza para ejecutar un programa, reemplazando el proceso en ejecución actual con el nuevo programa. El "lp" en `execlp()` significa "lista de punteros", que se refiere a los argumentos pasados ​​al nuevo programa. Aquí hay una explicación detallada de cómo funciona `execlp()`:

Prototipo:

```c

int execlp(const char *archivo, const char *arg0, ..., const char *argn, (char *) NULL);

```

Argumentos:

- `archivo`:Esta es la ruta al archivo ejecutable o programa que desea ejecutar.

- `arg0`, `...,` `argn`:Estos son punteros a cadenas terminadas en nulo que representan los argumentos de la línea de comandos que se pasarán al nuevo programa. `arg0` siempre debe ser el nombre del programa en sí.

- `(char *) NULL`:Este es un puntero nulo requerido al final de la lista de argumentos. Sirve como delimitador para indicar el final de la lista de argumentos.

Descripción:

- `execlp()` es una variación de la llamada al sistema `execl()` que utiliza una forma simplificada pero flexible de pasar argumentos al nuevo programa. Busca automáticamente el archivo ejecutable en los directorios especificados por la variable de entorno `PATH`.

- Cuando se llama a `execlp()`, el proceso en ejecución actual se reemplaza por el nuevo programa especificado en `file`. Los argumentos `arg0`, `...,` `argn` se pasan como argumentos de línea de comando al nuevo programa.

- `execlp()` no regresa al proceso de llamada. En cambio, transfiere el control al nuevo programa, que comienza la ejecución. Si hay algún error durante la ejecución de `execlp()`, como que no se encuentra el archivo ejecutable o permisos insuficientes, la llamada a `execlp()` fallará y devolverá -1, sin afectar el proceso actual.

Ejemplo:

```c

#incluir

#incluir

int principal() {

// Ejecutamos el comando "ls -l"

execlp("ls", "ls", "-l", (char *) NULL);

// Esta línea sólo se ejecutará si execlp() falla

perror("execlp() falló");

devolver 0;

}

```

En este ejemplo, la llamada al sistema `execlp()` ejecuta el comando "ls -l", que enumera los archivos en el directorio actual con información detallada. Si `execlp()` tiene éxito, se ejecutará el comando "ls -l" y el control se transferirá al programa `ls`. Si `execlp()` encuentra un error, la función `perror()` imprimirá un mensaje de error en el flujo de error estándar ("stderr").

Puntos importantes:

- `execlp()` es una de varias funciones de la familia `exec()` en Linux que realizan la misma tarea de ejecutar nuevos programas pero con diferentes mecanismos de manejo de argumentos. Otras funciones comunes `exec()` incluyen `execl()`, `execv()`, `execvp()` y `execve()`.

- `execlp()` solo busca el ejecutable en los directorios especificados por la variable de entorno `PATH`, por lo que es esencial asegurarse de que el ejecutable esté presente en uno de esos directorios.

- Los argumentos `arg0`, `...,` `argn` deben ser cadenas terminadas en nulo. Pasar cadenas no terminadas en nulo o intentar pasar más argumentos de los que la función puede manejar puede provocar un comportamiento indefinido.

- La llamada al sistema `execlp()` se utiliza en muchos sistemas operativos tipo Unix, no sólo en Linux.

unix
Cómo hackear UNIX
Cómo dejar de Unix servicios de impresión
Cómo convertir de fecha en un número en Unix
Las especificaciones del sistema operativo Unix
Cómo hacer un tutorial de Unix
¿Cuál es la diferencia entre UNIX 95 y 98?
¿Vocabulario de una interfaz de línea de comandos?
¿Cómo se ve un nombre de ruta absoluto en Linux?
Conocimiento de la computadora © http://www.ordenador.online