l
a v
ve voláních exec označují, zda jsou argumenty poskytovány prostřednictvím seznamu nebo array(vector)
. Někde jsem to četl, že p
označuje cestu uživatele a e
označují prostředí, ale nepochopili jste, co to znamená?
Přijatá odpověď:
Zkontrolujte tento odkaz na Wikipedii na funkci Exec a tento odkaz na Spuštění procesu pomocí volání exec()
e – Novému obrazu procesu je explicitně předáno pole ukazatelů na proměnné prostředí.
Verze s příponou „e“ předají programu prostředí. Prostředí
je právě to – jakýsi „kontext“, ve kterém má program
pracovat. Můžete mít například kontrolu pravopisu, která má
slovník slov. Místo zadávání umístění slovníku
pokaždé na příkazovém řádku jej můžete zadat v prostředí
:
l – Argumenty příkazového řádku jsou předány jednotlivě (seznam) funkci.
Například, pokud chci vyvolat příkaz ls s argumenty -t,
-r a -l (což znamená „seřadit výstup podle času v opačném pořadí a ukázat mi dlouhou verzi výstupu“ ), mohl bych to specifikovat jako
buď.
p – Používá proměnnou prostředí PATH k vyhledání souboru pojmenovaného v argumentu cesty, který má být proveden.
Verze s příponou „p“ prohledají adresáře ve vaší proměnné prostředí PATH
, aby nalezly spustitelný soubor. Pravděpodobně jste si všimli
, že všechny příklady mají pevně zakódované umístění pro spustitelný soubor:
/bin/ls a /usr/bin/spellcheck. A co další spustitelné soubory? Pokud
nechcete nejprve zjistit přesnou cestu k tomuto konkrétnímu programu,
by bylo nejlepší, kdyby uživatel řekl vašemu programu všechna místa, kde má
vyhledat spustitelné soubory. Standardní proměnná prostředí PATH dělá
právě to.
v – Argumenty příkazového řádku jsou předány funkci jako pole (vektor) ukazatelů.
Seznam argumentů je specifikován pomocí ukazatele na argumentový vektor.
Jak bylo zmíněno v druhé odpovědi, tento odkaz na Unix System Calls je také stejně úžasný pro další čtení.
Související:$PWD? (vs aktuální pracovní adresář)?