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.