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

Quando restituisce una chiamata a Exec in Unix?

In Unix, una chiamata a `Exec` Never Returns Se ci riesce. Ecco perché:

* Sostituzione, non esecuzione: `Exec` non * esegui * un nuovo programma nel senso tradizionale. * Sostituisce * l'immagine del processo corrente con l'immagine del nuovo programma. Ciò significa che il processo originale scompare essenzialmente e il nuovo programma prende il suo posto.

* Trasferimento di controllo diretto: La chiamata di sistema `Exec` trasferisce direttamente il controllo al nuovo programma senza tornare al chiamante. È come se il processo originale fosse "scambiato" con quello nuovo.

Esempio:

`` `c

#include

int main () {

// Tenta di sostituire il processo corrente con "LS -L"

if (execlp ("ls", "ls", "-l", null) ==-1) {

// raggiungi questo solo se ExeClp non riesce

Perror ("Execlp non riuscito");

Ritorno 1;

}

// Questa linea non verrà mai raggiunta

printf ("Questo non verrà mai stampato. \ n");

restituzione 0;

}

`` `

perché `Exec` è utile

* Efficienza: Evita il sovraccarico di creare un nuovo processo e gestire il suo spazio di memoria.

* Controllo diretto: Fornisce un meccanismo per un processo per passare perfettamente a un altro programma.

Punti chiave

* `Exec` Varianti (` Execl`, `Execv`,` Execlp`, `Execvp`) hanno tutti lo stesso comportamento in termini di valori di reso.

* Se `Exec` fallisce (ad es. File non trovato, problemi di autorizzazione), restituisce` -1` e imposta `errno` per indicare l'errore.

* Per far eseguire un programma un altro e quindi continuare, è necessario utilizzare `fork` per creare un processo figlio prima di chiamare` Exec` nel bambino.

Fammi sapere se hai altre domande su "Exec" o processi in Unix!

 

sistemi © www.354353.com