Prototipo:
```c
int execlp(const char *file, const char *arg0, ..., const char *argn, (char *) NULL);
```
Argomenti:
- `file`:questo è il percorso del file eseguibile o del programma che desideri eseguire.
- `arg0`, `...,` `argn`:puntatori a stringhe con terminazione null che rappresentano gli argomenti della riga di comando da passare al nuovo programma. "arg0" dovrebbe sempre essere il nome del programma stesso.
- `(char *) NULL`:questo è un puntatore null obbligatorio alla fine dell'elenco di argomenti. Serve come delimitatore per indicare la fine dell'elenco di argomenti.
Descrizione:
- `execlp()` è una variante della chiamata di sistema `execl()` che utilizza un modo semplificato ma flessibile per passare gli argomenti al nuovo programma. Cerca automaticamente il file eseguibile nelle directory specificate dalla variabile d'ambiente "PATH".
- Quando viene chiamato `execlp()`, il processo attualmente in esecuzione viene sostituito dal nuovo programma specificato da `file`. Gli argomenti `arg0`, `...,` `argn` vengono passati come argomenti della riga di comando al nuovo programma.
- `execlp()` non ritorna al processo chiamante. Trasferisce invece il controllo al nuovo programma, che inizia l'esecuzione. Se si verificano errori durante l'esecuzione di `execlp()`, come il file eseguibile non trovato o permessi insufficienti, la chiamata a `execlp()` fallirà e restituirà -1, lasciando inalterato il processo corrente.
Esempio:
```c
#include
#include
int principale() {
// Esegui il comando "ls -l".
execlp("ls", "ls", "-l", (char *) NULL);
// Questa riga verrà eseguita solo se execlp() fallisce
perror("execlp() fallito");
restituire 0;
}
```
In questo esempio, la chiamata di sistema `execlp()` esegue il comando "ls -l", che elenca i file nella directory corrente con informazioni dettagliate. Se `execlp()` ha esito positivo, verrà eseguito il comando "ls -l" e il controllo verrà trasferito al programma `ls`. Se `execlp()` riscontra un errore, la funzione `perror()` stamperà un messaggio di errore nel flusso di errore standard ("stderr").
Punti importanti:
- `execlp()` è una delle numerose funzioni della famiglia `exec()` in Linux che svolgono lo stesso compito di eseguire nuovi programmi ma con meccanismi di gestione degli argomenti diversi. Altre funzioni `exec()` comuni includono `execl()`, `execv()`, `execvp()` e `execve()`.
- `execlp()` cerca l'eseguibile solo nelle directory specificate dalla variabile d'ambiente `PATH`, quindi è essenziale assicurarsi che l'eseguibile sia presente in una di quelle directory.
- Gli argomenti `arg0`, `...,` `argn` devono essere stringhe con terminazione null. Il passaggio di stringhe con terminazione non null o il tentativo di passare più argomenti di quelli che la funzione può gestire può portare a un comportamento indefinito.
- La chiamata di sistema `execlp()` è utilizzata in molti sistemi operativi simili a Unix, non solo in Linux.
Informazioni correlate
sistemi © www.354353.com