Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
* Výmena, nie vykonanie: `exec` nevedie * nový program v tradičnom slova zmysle. Nahrádza * obraz aktuálneho procesu obrazom nového programu. To znamená, že pôvodný proces v podstate zmizne a nový program zaujme jeho miesto.
* Priamy prenos ovládacieho prvku: Systémové volanie „Exec` priamo prenáša ovládací prvok do nového programu bez návratu k volajúcemu. Je to ako pôvodný proces je „vymenený“ za nový.
Príklad:
`` C
#include
int main () {
// Pokúste sa nahradiť aktuálny proces „LS -L“
if (execlp ("ls", "ls", "-l", null) ==-1) {
// Dosiahnite to iba v prípade zlyhania execlp
Perror („EXECLP zlyhal“);
návrat 1;
}
// Táto linka sa nikdy nedosiahne
printf („Toto nikdy nebude vytlačené. \ n“);
návrat 0;
}
`` `
Prečo je `exec` užitočný
* Účinnosť: Vyhýba sa režijnému vytvoreniu vytvorenia nového procesu a riadenia jeho pamäťového priestoru.
* Priame ovládacie prvky: Poskytuje mechanizmus pre proces na plynulý prechod do iného programu.
Kľúčové body
* `exec` Variants (` execl`, `execv`,` execlp`, `execvp`) všetky majú rovnaké správanie z hľadiska návratových hodnôt.
* Ak zlyhá `exec` (napr. Súbor nenájdený, problémy s povolením), vráti` -1` a nastaví «errno` na označenie chyby.
* Ak chcete program vykonať iný a potom pokračovať, musíte použiť „Fork` na vytvorenie detského procesu pred zavolaním` exec` u dieťaťa.
Dajte mi vedieť, ak máte nejaké ďalšie otázky týkajúce sa „exec“ alebo procesov v UNIX!