Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
`execl` (a jeho varianty)
* Účel: „Execl` nahrádza aktuálny proces novým procesom. Priamo načíta a prevádzkuje zadaný program, ktorý efektívne ukončí pôvodný program.
* Ako to funguje:
* Výmena: Proces volania sa nahradí novým procesom. To znamená, že k pôvodnému programu nie je návrat.
* argumenty: „Execl` berie názov spustiteľného súboru a zoznam argumentov ako parametre. Nemá schopnosť spracovať štandardné presmerovanie vstupu/výstupu.
* Príklad:
`` C
#include
#include
int main () {
execl ("/bin/ls", "ls", "-l", null); // Nahraďte aktuálny proces „LS -L“
// Tento riadok sa nedosiahne
návrat 0;
}
`` `
`System`
* Účel: `System` vykoná príkaz ako samostatný proces. Umožňuje vám spustiť príkazy shellu z vášho programu C.
* Ako to funguje:
* vidlice a exec: `System` používa` Fork` na vytvorenie detského procesu. Tento detský proces potom vykoná príkaz pomocou `execl`.
* samostatné procesy: Pôvodný proces a novo vykonaný príkaz sa prevádzkujú v samostatných procesoch. To znamená, že pôvodný proces môže pokračovať po dokončení príkazu.
* Vstup/výstup: Funkcia „System`“ poskytuje spôsob riadenia štandardného vstupu, výstupu a presmerovania chýb cez Shell.
* Príklad:
`` C
#include
int main () {
systém („LS -l“); // Vykonajte 'ls -l' ako samostatný proces
návrat 0;
}
`` `
Kľúčové rozdiely
* Výmena procesu: „Execl` nahrádza aktuálny proces, zatiaľ čo` System` vytvára nový proces.
* return: „Execl` sa nevracia do programu volania, zatiaľ čo` System` sa vráti po dokončení vykonaného príkazu.
* Integrácia shellu: `System 'poskytuje prístup k schopnostiam spoločnosti Shell na presmerovanie príkazov a potrubia, zatiaľ čo` execl` priamo vykonáva program.
Kedy použiť každú funkciu
* `execl`: Použite `execl`, keď chcete úplne nahradiť aktuálny proces iným programom. Je vhodný pre prípady, keď program volania nemusí pokračovať po začatí nového programu.
* `System`: Použite `System`, keď chcete vykonať príkaz ako samostatný proces a uchovajte si kontrolu nad pôvodným programom. Je vhodný pre scenáre, kde potrebujete spustiť príkazy shellu alebo presmerovať vstup/výstup.
Ďalšie poznámky
* Existujú aj ďalšie varianty `execl`:` execv`, `execlp`,` execvp` atď., Ktoré sa líšia v tom, ako spracúvajú argumenty a vyhľadávacie cesty.
* `Execl` a` System` majú bezpečnostné dôsledky. Ak do týchto funkcií odovzdávate vstup dodávaný používateľom, nezabudnite ho dezinfikovať, aby ste zabránili útokom na vstrekovanie potenciálneho kódu.