Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy
počítačové znalosti >> Systémy >> unix >> .

Aký je rozdiel medzi execl a systémom v UNIX?

Rozdeľme rozdiely medzi `execl` a` System` v UNIX:

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

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené