|  Startsida |  Hårdvara |  Nätverk |  Programmering |  Programvara |  Felsökning |  System |   
System
  • Grundläggande datorkunskaper
  • Linux
  • Mac OS
  • Ubuntu
  • Unix
  • Windows
  • Windows Vista
  • Windows XP
  • Windows 7
  • Windows 10
  • Windows 11
  • Windows 2012
  • Windows 2016
  • Windows 2019
  • Windows 2022
  • Apple
  • Android
  • iOS
  • CentOS
  • * Dator Kunskap >> System >> Unix >> Content

    Vad händer om argumentet till EXEC inte kan köras med Linux?

    Om argumentet till "exec" -familjen av funktioner (t.ex. "execl", "execv", "execvp") i Linux är inte körbar, kommer "exec" -samtalet att misslyckas. Processen kommer * inte * att byta till att köra den angivna filen.

    Speciellt:

    * `errno` kommer att ställas in: Den "Errno" globala variabeln kommer att ställas in för att indikera felet. Det mest troliga värdet kommer att vara "enoexec" (körbart formatfel), vilket innebär att filen inte är en giltig körbar för den aktuella arkitekturen, eller "eacces" (tillstånd nekad), vilket innebär att processen inte har tillstånd att köra filen (även om den är en giltig körbar). Andra fel är möjliga beroende på de specifika omständigheterna (som filen som inte finns, "Enoent").

    * Den ursprungliga processen fortsätter: Den ursprungliga processen kommer * att fortsätta * springa. "Exec" -samtalet kommer att returnera -1, och programmet kommer att fortsätta körningen från punkten efter det misslyckade "exec" -samtalet. Detta är avgörande; Det avslutar inte processen. Din kod bör kontrollera returvärdet för `exec 'för att hantera detta fel graciöst. Att helt enkelt ignorera returvärdet kan leda till subtila och svåra att debugga buggar.

    Exempel (c):

    `` `c

    #include

    #include

    #include

    #include

    int main () {

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

    if (ret ==-1) {

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

    return 1; // Ange ett fel

    }

    // Denna rad kommer endast att nås om execl lyckas (vilket det inte kommer att i detta exempel)

    printf ("Detta ska inte skrivas ut. \ n");

    return 0;

    }

    `` `

    Denna kod försöker utföra ett icke-existerande program. "Execl" -samtalet kommer att misslyckas, "Errno" kommer att ställas in (sannolikt "Enoent"), "Strerror (Errno)" kommer att ge ett mänskligt läsbart felmeddelande, och programmet kommer att skriva ut felet och avsluta med en icke-noll status. Om filen fanns men saknade körtillstånd, skulle "errno" troligen vara "eacces".

    Kort sagt, ett misslyckat "exec" -samtal på grund av en icke-genomförbar fil är ett runtime-fel som måste hanteras uttryckligen inom ditt program för att förhindra oväntat beteende. Kontrollera alltid returvärdet för "exec" och hantera fel på lämpligt sätt.

    Tidigare:

    nästa:
    relaterade artiklar
    ·Unix FTP Tutorial
    ·Hur man bygger en spegel i SCO Unix
    ·Hur fixar Scanners till jobbet på Unix
    ·Hur många kommandon kan du pipa tillsammans i Unix?
    ·Hur lagras och återvinns information från en CD?
    ·Vilken roll är ett skal i Linux?
    ·Vad är skillnaden mellan UNIX 95 och 98?
    ·Förklara kommandon för säkerhetskopiering i Linux?
    ·Varför Unix är det bästa operativsystemet än annat …
    ·Vad är ett skal i Linux?
    Utvalda artiklarna
    ·Hur bli av XP Wallpaper
    ·Hur fixar Windows Resolution
    ·Hur Uppdatering från Windows 98 till Windows 7
    ·Lägga till en användare i Debian
    ·Hur man gör Microsoft Word XP-dokument Säkert & Prote…
    ·Vad är skärmstorleken på en MacBook?
    ·Hur att påskynda Windows XP Registry
    ·Vad betyder Macintosh?
    ·Hur man skapar en Vista bootbar DVD med Nero
    ·Hur man gör det Standby längre på en Mac
    Copyright © Dator Kunskap https://www.dator.xyz