Home Hardware Networking Programmazione Software Domanda Sistemi
Conoscenza del computer >> sistemi >> Unix >> .

Cos'è la chiamata di sistema exclp?

La chiamata di sistema `execlp()` in Linux viene utilizzata per eseguire un programma, sostituendo il processo attualmente in esecuzione con il nuovo programma. "lp" in `execlp()` sta per "elenco di puntatori", che si riferisce agli argomenti passati al nuovo programma. Ecco una spiegazione dettagliata di come funziona `execlp()`:

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.

 

sistemi © www.354353.com