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

Kedy sa volal na exeku v UNIX?

V Unix Ak to uspeje. Tu je dôvod:

* 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!

Najnovšie články

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