|  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 heter och heter Namnlösa rör i Unix?

    I UNIX-liknande system är rör en mekanism för kommunikation mellan processen (IPC). De tillåter en process att skicka data till en annan process. Det finns två huvudtyper:namngivna rör (även kallade FIFOS) och namngivna rör (även kallade anonyma rör).

    namngivna rör (anonyma rör):

    * skapande: Skapad med systemsamtalet `pipe (). Detta samtal skapar ett enkelriktat rör som består av två filbeskrivningar:ett för läsning (`FD [0]`) och ett för att skriva (`FD [1]`).

    * Access: Endast processen som skapade röret kan komma åt det. Rörets existens är inte känd utanför skapande processens sammanhang. Vanligtvis används för kommunikation mellan en förälder och barnprocess eller mellan två processer som är uttryckligen anslutna.

    * livstid: Röret finns endast under livslängden för processerna med det. När endera processen stänger slutet förstörs röret automatiskt och ytterligare försök att läsa eller skriva kommer att misslyckas.

    * Exempel (med `gaffel ()` och `pipe ()`):

    `` `c

    #include

    #include

    #include

    #include

    int main () {

    int fd [2]; // filbeskrivare för röret

    pid_t pid;

    if (pipe (fd) ==-1) {

    perror ("rör misslyckades");

    utgång (1);

    }

    pid =gaffel ();

    if (pid <0) {

    perror ("gaffel misslyckades");

    utgång (1);

    } annars om (pid ==0) {// barnprocess

    Close (FD [1]); // Stäng skrivänden

    Char Buffer [100];

    läs (FD [0], buffert, storlek (buffert));

    printf ("barn mottagen:%s \ n", buffert);

    Close (FD [0]);

    } annat {// förälderprocess

    Close (FD [0]); // Stäng läsänden

    const char* meddelande ="Hej förälder!";

    skriv (FD [1], meddelande, strlen (meddelande) + 1); // +1 för nollterminator

    Close (FD [1]);

    vänta (null); // Vänta på att barnet är slut

    }

    return 0;

    }

    `` `

    namngivna rör (FIFOS):

    * skapande: Skapad med systemsamtalet `mkfifo (). Detta skapar en fil i filsystemet som representerar röret. Filens namn fungerar som identifierare för röret.

    * Access: Flera processer kan komma åt ett namngivet rör. Varje process som känner till rörets väg kan öppna den för läsning eller skriva (även om bara en process kan skriva åt gången, såvida inte använder specialkonfigurationer). De överlever utöver livslängden för processerna med dem.

    * livstid: Röret kvarstår i filsystemet tills det uttryckligen har raderats med `unlink ()`.

    * Exempel (med två separata program som kommunicerar genom ett namngivet rör):

    Du skulle behöva två program:ett för att skriva till FIFO och ett annat att läsa från den. `mkfifo ()` kallas en gång (kanske i ett installationsskript) för att skapa FIFO, sedan programmen `open ()` femo för läsning/skrivning. Processerna måste hantera fel inklusive möjligheten att FIFO inte finns och fel på `open ()`.

    Nyckelskillnader sammanfattade:

    | Funktion | Namnlösa rör | Namnet Pipe (FIFO) |

    | ----------------- | ---------------------------- | --------------------------------- |

    | Skapelse | `pipe ()` | `mkfifo ()` |

    | Åtkomst | Bara skapa process | Flera processer |

    | Uthållighet | Existerar endast under processlivstiden | Fortsätter i filsystemet |

    | Interprocess | Vanligtvis förälder-barn eller uttryckligen anslutna processer | Kan ansluta icke -relaterade processer |

    | Filsysteminmatning | Nej | Ja |

    Namngivna rör är mer flexibla för kommunikation mellan icke -relaterade processer, medan namngivna rör är enklare och mer effektiva för kommunikation mellan nära besläktade processer som en förälder och dess barn. Valet beror på den specifika kommunikationsbehovet i din applikation.

    Tidigare:

    nästa:
    relaterade artiklar
    ·Vilket operativsystem anses vara ett derivat av UNIX?
    ·Hur återställa ett lösenord på Unix
    ·Vilken applikation skrivs för att tillhandahålla ett …
    ·Är Shell ett gränssnitt mellan kärnan och användare…
    ·Vilket kommando visar listan?
    ·Hur mycket kostar Unix -hårdvara?
    ·Tutorial på Unix ZFS
    ·Hur man skriver ett bash-manus i UNIX
    ·Filstruktur ett UNIX-operativsystem
    ·Varför används kommandot awk -f?
    Utvalda artiklarna
    ·Hur återställa raderade filer på en Mac
    ·Hur du återställer en Terminal Licens service Temp
    ·Beskrivning av de viktigaste funktionerna av ett operat…
    ·Hur man reparerar Inställningar för nätverksanslutni…
    ·Hur man installerar Windows 7 Om den sitter fast på Ex…
    ·Hur återställa raderade filer i XP
    ·Hur man ändrar & Märken på en MP3-spelare
    ·Fördelarna med ReadyBoost
    ·Vad är den mest energieffektiva fönster
    ·Hur du ändrar en Apple Mac nyckelring lösenord
    Copyright © Dator Kunskap https://www.dator.xyz