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

Čo sa stane, ak argument pre exec nie je spustený pomocou Linuxu?

Ak argument pre rodinu funkcií „Exec` (napr.` Execl`, `execv`,` execvp`) v systéme Linux nie je spustiteľný, hovor `exec` zlyhá. Proces * nie je * prepnutý na vykonanie zadaného súboru.

Konkrétne:

* `errno` bude nastavený: Globálna premenná „Errno` bude nastavená na označenie chyby. Najpravdepodobnejšou hodnotou bude `enoExec` (chyba spustiteľného formátu), čo znamená, že súbor nie je platný spustiteľný pre aktuálnu architektúru alebo„ EACCES` (zamietnuté povolenie), čo znamená, že proces nemá povolenie na vykonanie súboru (aj keď je to platný spustiteľný). Ostatné chyby sú možné v závislosti od konkrétnych okolností (napríklad súbor, ktorý sa nenašiel, „enoent“).

* Pôvodný proces pokračuje: Pôvodný proces bude * pokračovať * beží. Hovor „Exec` sa vráti -1 a program bude pokračovať v vykonávaní od bodu po neúspešnom volaní„ Exec “. To je rozhodujúce; Nakoniec to nevykonáva. Váš kód by mal skontrolovať návratovú hodnotu `exec`, aby sa táto chyba elegantne spracovala. Jednoducho ignorovanie návratovej hodnoty môže viesť k jemným a ťažko-ťažkým debugovým chybám.

Príklad (c):

`` C

#include

#include

#include

#include

int main () {

int ret =execl ("./ neexistent_program", "neexistent_program", null);

if (ret ==-1) {

fprintf (stderr, "Execl zlyhal:%s \ n", strerror (errno));

návrat 1; // Uveďte chybu

}

// Tento riadok sa dosiahne iba vtedy, ak uspeje execl (čo v tomto príklade nebude)

printf („Toto by sa nemalo vytlačiť. \ n“);

návrat 0;

}

`` `

Tento kód sa pokúša vykonať neexistujúci program. Hovor `execl` zlyhá,` errno` bude nastavený (pravdepodobne `enoent`),` strerror (errno) `poskytne chybové hlásenie čitateľné človeka a program vytlačí chybu a ukončí sa so stavom nenulového stavu. Ak súbor existoval, ale chýba mu povolenie na vykonanie, „errno` by pravdepodobne bol` eacces`.

Stručne povedané, neúspešné volanie „exec` z dôvodu nevykonateľného súboru je chyba runtime, s ktorou sa musí vo vašom programe explicitne riešiť, aby sa zabránilo neočakávanému správaniu. Vždy skontrolujte návratovú hodnotu `exec` a primerane spracujte chyby.

Najnovšie články

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