Welkom op de Nederland Computer Kennisnetwerk!  
 
Zoeken computer kennis
Home Hardware Netwerken Programmering Software Computerstoring Besturingssysteem
Computer Kennis >> Besturingssysteem >> unix >> Content
Wat gebeurt er als het argument voor exec niet uitvoerbaar is met Linux?
Als het argument voor de `exec`-familie van functies (bijvoorbeeld `execl`, `execv`, `execvp`) in Linux niet uitvoerbaar is, zal de `exec`-aanroep mislukken. Het proces zal *niet* overschakelen naar het uitvoeren van het opgegeven bestand.

Specifiek:

* `errno` wordt ingesteld: De globale variabele `errno` wordt ingesteld om de fout aan te geven. De meest waarschijnlijke waarde is `ENOEXEC` (fout met uitvoerbaar formaat), wat betekent dat het bestand geen geldig uitvoerbaar bestand is voor de huidige architectuur, of `EACCES` (Toestemming geweigerd), wat betekent dat het proces geen toestemming heeft om het bestand uit te voeren (zelfs als het een geldig uitvoerbaar bestand is). Andere fouten zijn mogelijk afhankelijk van de specifieke omstandigheden (zoals het bestand dat niet wordt gevonden, `ENOENT`).

* Het oorspronkelijke proces gaat verder: Het oorspronkelijke proces *blijft* actief. De `exec`-aanroep zal -1 retourneren, en het programma zal doorgaan met de uitvoering vanaf het punt na de mislukte `exec`-aanroep. Dit is cruciaal; het beëindigt het proces niet. Uw code zou de geretourneerde waarde van `exec` moeten controleren om deze fout correct af te handelen. Het simpelweg negeren van de retourwaarde kan leiden tot subtiele en moeilijk te debuggen bugs.

Voorbeeld (C):

```c

#include

#include

#include

#include

int hoofd() {

int ret =execl("./nonexistent_program", "nonexistent_program", NULL);

als (ret ==-1) {

fprintf(stderr, "execl mislukt:%s\n", strerror(errno));

retour 1; // Geef een fout aan

}

// Deze regel wordt alleen bereikt als execl slaagt (wat in dit voorbeeld niet het geval is)

printf("Dit mag niet worden afgedrukt.\n");

retour 0;

}

```

Deze code probeert een niet-bestaand programma uit te voeren. De `execl`-aanroep zal mislukken, `errno` zal worden ingesteld (waarschijnlijk op `ENOENT`), `strerror(errno)` zal een voor mensen leesbare foutmelding geven, en het programma zal de fout afdrukken en afsluiten met een status die niet nul is. Als het bestand bestond maar geen uitvoerrechten had, zou `errno` waarschijnlijk `EACCES` zijn.

Kortom, een mislukte `exec`-aanroep vanwege een niet-uitvoerbaar bestand is een runtimefout die expliciet binnen uw programma moet worden afgehandeld om onverwacht gedrag te voorkomen. Controleer altijd de geretourneerde waarde van `exec` en handel fouten op de juiste manier af.

Previous: Next:
  unix
·Hoe kan ik een gebruiker toe a…
·Tutorial voor Unix 
·Hoe te Vreemd genoeg is vernoe…
·Wat is in UNIX het standaardui…
·Wat is een commandorelatie? 
·Hoe maak je een tabblad Vervan…
·Wat is het doel van het rd-com…
·Hoe om te controleren op Runni…
·Wat is het doel van meer param…
  Related Articles
Wat is de betekenis van een introductie …
Wat is de betekenis van logica in de inf…
Wat is de betekenis van het hebben van e…
Wat is de betekenis van I/O in computers…
Wat is de rol van de kernel bij het func…
Wat is de belangrijkste factor in comput…
Wat is het belang van de systeemklok bij…
Wat is het belang van procedure in de in…
Wat is de definitie van computation en h…
  Besturingssysteem Articles
·Wat is een geavanceerde commandopost? 
·Hoe maak je een link op iWeb Dat Gaat na…
·Hoe maak Letters Bigger voor Reading op …
·Hoe maak je een bestand naar de Floppy D…
·Hoe maak je een onderstrepingsteken in W…
·Hoe maak je een Download Van de Prullenb…
·Hoe te upgraden van Tiger naar Leopard o…
·Hoe te Autorun instellingen in Windows V…
·Hoe kan ik mijn Desktop Background Setti…
Copyright © Computer Kennis https://www.nldit.com