|  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

    När återvänder ett samtal till EXEC i Unix?

    I Unix, ett samtal till `exec` aldrig returnerar Om det lyckas. Här är varför:

    * ersättare, inte exekvering: `exec` inte * kör * ett nytt program i traditionell mening. Den * ersätter * den nuvarande processens bild med det nya programmets bild. Detta innebär att den ursprungliga processen i huvudsak försvinner och det nya programmet tar sin plats.

    * Direktkontrollöverföring: Systemsamtalet "Exec" överför direkt kontrollen till det nya programmet utan att återvända till den som ringer. Det är som den ursprungliga processen är "bytt ut" för den nya.

    Exempel:

    `` `c

    #include

    int main () {

    // Försök att ersätta den aktuella processen med "LS -L"

    if (execlp ("ls", "ls", "-l", null) ==-1) {

    // når bara detta om execlp misslyckas

    perror ("execlp misslyckades");

    return 1;

    }

    // Denna linje kommer aldrig att nås

    printf ("Detta kommer aldrig att skrivas ut. \ n");

    return 0;

    }

    `` `

    Varför `exec` är användbart

    * Effektivitet: Det undviker omkostnaderna för att skapa en ny process och hantera dess minnesutrymme.

    * Direktkontroll: Ger en mekanism för en process för att sömlöst övergå till ett annat program.

    Nyckelpunkter

    * `exec` varianter (` execl`, `execv`,` execlp`, `execvp`) har alla samma beteende när det gäller returvärden.

    * Om "exec" misslyckas (t.ex. fil inte hittas, tillståndsproblem), returnerar den "-1" och ställer in "errno" för att ange felet.

    * För att få ett program att utföra ett annat och sedan fortsätta, måste du använda `Fork 'för att skapa en barnprocess innan du ringer` exec' i barnet.

    Låt mig veta om du har några andra frågor om "exec" eller processer i Unix!

    Tidigare:

    nästa: No
    relaterade artiklar
    ·Vad indikerar binär filbehörighet 6 i Linux?
    ·Unix Language Tutorial
    ·Hur hittar Gårdagens datum i Unix
    ·Hur hitta filer i Unix
    ·Vad är kommandot sed i Unix?
    ·Hur Packa en Z- fil i Unix
    ·Varför är UNIX användbar vid skalkrogrammering?
    ·Vad är skillnaden mellan byte och ord?
    ·Vad är lex och yacc när det gäller unix operativsyst…
    ·Vilken funktion har commandcom?
    Utvalda artiklarna
    ·Hur kan jag få min Windows XP User & Admin Login Passw…
    ·Hur man installerar Windows XP utan CD-nyckel
    ·Hur Anpassa operativsystemet Windows 7
    ·Windows XP Systemkrav
    ·Hur man installerar Microsoft Net Compact Framework 3.5…
    ·Hur man rensar ett SD-kort på en Mac
    ·Hur man kan blockera Google Analytics från att spåra …
    ·Hur får Windows XP Startup diskar eller Windows XP ins…
    ·Hur du ändrar ett Windows Mail lösenord
    ·Hur att ändra färger Från 16 till 256
    Copyright © Dator Kunskap https://www.dator.xyz