Quali sono le diverse versioni di exec usate in C e C ++?

Queste sono tutte le versioni di exec che possono essere usate in C (e C ++)

execl execle execlp execv execve execvp 

Qual è la differenza tra loro? Come fai a sapere quale usare?

Le differenze sono combinazioni di:

  1. L vs V : se si desidera passare i parametri al programma eseguito come

    • L : parametri individuali nella chiamata (lista degli argomenti variabili): execl() , execle() , execlp() ed execlpe()
    • V : come una matrice di char * execv() , execve() , execvp() ed execvpe()

    Il formato array è utile quando il numero di parametri da inviare al processo di esecuzione è variabile, come non noto in precedenza, quindi non è ansible inserire un numero fisso di parametri in una chiamata di funzione.

  2. E : Le versioni con una ‘e’ alla fine ti permettono di passare anche un array di char * che è un insieme di stringhe aggiunte all’ambiente dei processi spawn prima che il programma exec’ed venga lanciato. Ancora un altro modo per passare i parametri, davvero.

  3. P : Le versioni con ‘p’ in là usano la variabile path environment per cercare il file eseguibile chiamato da eseguire. Le versioni senza la ‘p’ richiedono un percorso file assoluto o relativo da anteporre al nome file dell’eseguibile se non si trova nella directory di lavoro corrente.

Opengroup sono uno dei migliori riferimenti generali per le funzioni core c / c ++.

I documenti per exec * sono qui: http://pubs.opengroup.org/onlinepubs/009695399/functions/environ.html

È l’estensione Posix della libreria di runtime C. Se la documentazione Posix ufficiale non è sufficiente, allora posso raccomandare il libro – Samuel P. Harbison, Guy L.Steele, 2002 “CA Reference” Pagina # 416 – coprire questa domanda.