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?
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?
Risposte:
Le differenze sono combinazioni di:
L vs V : se vuoi passare i parametri al programma eseguito come
execl()
, execle()
, execlp()
, eexeclpe()
execv()
, execve()
, execvp()
eexecvpe()
Il formato dell'array è utile quando il numero di parametri che devono essere inviati al processo eseguito è variabile, poiché non è noto in anticipo, quindi non è possibile inserire un numero fisso di parametri in una chiamata di funzione.
E : Le versioni con una 'e' alla fine ti permettono di passare anche un array di char * che sono un insieme di stringhe aggiunte all'ambiente dei processi generati prima che il programma eseguito venga lanciato. Ancora un altro modo per passare i parametri, davvero.
P : Le versioni con "p" utilizzano la variabile d'ambiente PATH
per cercare il file eseguibile denominato da eseguire. Le versioni senza la "p" richiedono che un percorso file assoluto o relativo sia anteposto al nome del file eseguibile se non si trova nella directory di lavoro corrente.
Opengroup è uno dei migliori riferimenti generali per le funzioni principali di c / c ++.
I documenti per exec * sono qui: http://pubs.opengroup.org/onlinepubs/009695399/functions/environ.html
È l'estensione Posix della libreria runtime C. Se la documentazione ufficiale di Posix è insufficiente, posso raccomandare il libro - Samuel P. Harbison, Guy L.Steele, 2002 "CA Reference" Pagina n. 416 - per coprire questa domanda.