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


92

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:


184

Le differenze sono combinazioni di:

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

    • L : singoli parametri nella chiamata (lista di argomenti variabile): execl(), execle(), execlp(), eexeclpe()
    • V : come un array di char * 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.

  2. 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.

  3. 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.


2
La migliore spiegazione che ho visto finora. È breve quasi quanto la documentazione / riferimento ufficiale, ma è mille volte più espressivo, informativo e comprensibile. Grazie.
Akito

5

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


2
questo non risponde realmente alla domanda ed è solo link.
Jean-François Fabre

Prima di arrivare qui ho letto la documentazione sul sito, ma non è stata di grande aiuto. Le spiegazioni sono molto brevi, anche se dovrebbero essere elaborate. Inoltre, è difficile trovare la spiegazione corretta per ciò che stai cercando, se stai cercando da zero.
Akito

-4

È 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.


2
Sebbene questo collegamento possa rispondere alla domanda, è meglio includere le parti essenziali della risposta qui e fornire il collegamento come riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. - Dalla recensione
31piy

I collegamenti erano ad amazon e posxis standard per essere utili per il lettore. Ok, ho rimosso i link come hai chiesto, anche se non sono d'accordo sul fatto che sia meglio. Rimuovi il tuo voto se ora è più leggibile.
bruziuz

1
Non ho downvote per la tua risposta. Ho appena ricevuto la mia recensione sulla tua risposta, che pensavo fosse di bassa qualità. Non intendevo rimuovere i collegamenti. Il punto qui è includere estratti pertinenti dal collegamento che aiutano i futuri lettori a capire immediatamente la risposta. Il solo postare i link nella risposta non aiuta nessuno.
31piy
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.