Welkom op de Nederland Computer Kennisnetwerk!  
 
Zoeken computer kennis
Home Hardware Netwerken Programmering Software Computerstoring Besturingssysteem
Computer Kennis >> Besturingssysteem >> unix >> Content
Wat is een benoemde en een naamloze pipe in Unix?
In Unix-achtige systemen zijn leidingen een mechanisme voor communicatie tussen processen (IPC). Ze zorgen ervoor dat een proces gegevens naar een ander proces kan sturen. Er zijn twee hoofdtypen:benoemde pijpen (ook wel FIFO's genoemd) en naamloze pijpen (ook wel anonieme pijpen genoemd).

Naamloze pijpen (anonieme pijpen):

* Creatie: Gemaakt met behulp van de systeemaanroep `pipe()`. Deze aanroep creëert een unidirectionele pipe die bestaat uit twee bestandsdescriptors:één voor lezen (`fd[0]`) en één voor schrijven (`fd[1]`).

* Toegang: Alleen het proces dat de pipe heeft gemaakt, heeft er toegang toe. Het bestaan ​​van de pijp is niet bekend buiten de context van het creatieproces. Meestal gebruikt voor communicatie tussen een ouder- en kindproces of tussen twee processen die expliciet met elkaar verbonden zijn.

* Levensduur: De pijp bestaat slechts gedurende de levensduur van de processen die er gebruik van maken. Wanneer een van beide processen zijn einde bereikt, wordt de pipe automatisch vernietigd en zullen alle verdere pogingen tot lezen of schrijven mislukken.

* Voorbeeld (met `fork()` en `pipe()`):

```c

#include

#include

#include

#include

int hoofd() {

intfd[2]; // Bestandsbeschrijvingen voor de pijp

pid_t pid;

als (pijp(fd) ==-1) {

perr("pijp mislukt");

uitgang(1);

}

pid =vork();

als (pid <0) {

perror("vork mislukt");

uitgang(1);

} else if (pid ==0) {// Onderliggend proces

sluiten(fd[1]); // Sluit het schrijfeinde

char-buffer[100];

read(fd[0], buffer, groottevan(buffer));

printf("Kind ontvangen:%s\n", buffer);

sluiten(fd[0]);

} else {// Bovenliggend proces

sluiten(fd[0]); // Sluit het leeseinde

const char* message ="Hallo van ouder!";

write(fd[1], bericht, strlen(bericht) + 1); // +1 voor null-terminator

sluiten(fd[1]);

wacht(NULL); // Wacht tot het kind klaar is

}

retour 0;

}

```

Named Pipes (FIFO's):

* Creatie: Gemaakt met behulp van de systeemaanroep `mkfifo()`. Hierdoor wordt een bestand in het bestandssysteem gemaakt dat de pipe vertegenwoordigt. De bestandsnaam fungeert als identificatie voor de pipe.

* Toegang: Meerdere processen hebben toegang tot een benoemde pipe. Elk proces dat het pad van de pipe kent, kan het openen voor lezen of schrijven (hoewel er slechts één proces tegelijk kan schrijven, tenzij speciale configuraties worden gebruikt). Ze overleven langer dan de levensduur van de processen die ze gebruiken.

* Levensduur: De pipe blijft in het bestandssysteem aanwezig totdat deze expliciet wordt verwijderd met `unlink()`.

* Voorbeeld (met behulp van twee afzonderlijke programma's die communiceren via een benoemde pipe):

Je hebt twee programma's nodig:een om naar de FIFO te schrijven, en een ander om ervan te lezen. `mkfifo()` wordt één keer aangeroepen (misschien in een setup-script) om de FIFO te maken, waarna de programma's `open()` de FIFO openen voor lezen/schrijven. De processen moeten fouten afhandelen, inclusief de mogelijkheid dat de FIFO niet bestaat en fouten op `open()`.

Belangrijkste verschillen samengevat:

| Kenmerk | Naamloze pijp | Genoemde pijp (FIFO) |

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

| Creatie | `pijp()` | `mkfifo()` |

| Toegang | Alleen creatieproces | Meerdere processen |

| Volharding | Bestaat alleen tijdens de levensduur van het proces | Blijft bestaan ​​in bestandssysteem |

| Interproces | Meestal ouder-kind of expliciet verbonden processen | Kan niet-gerelateerde processen verbinden |

| Bestandssysteeminvoer | Nee | Ja |

Benoemde leidingen zijn flexibeler voor de communicatie tussen niet-gerelateerde processen, terwijl naamloze leidingen eenvoudiger en efficiënter zijn voor de communicatie tussen nauw verwante processen, zoals een ouder en zijn kind. De keuze hangt af van de specifieke communicatiebehoeften van uw toepassing.

Previous: Next:
  unix
·Nadelen van een UNIX -besturin…
·Fundamenteel doel van CAT -com…
·Commando wordt gebruikt om de …
·Waar staat Pam voor in Linux? 
·Is de NICE -opdracht nuttig op…
·Welke applicatie is geschreven…
·Wat zijn systeembeheerdersopdr…
·Hoe verander je de hoofdletter…
·Wat betekent dubbele kolom? 
  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
·Hoe je Super Cookies verwijderen Van OS …
·Hoe te Explorer adresbalk Reset 
·Hoe naar Boot Windows XP Van USB 
·Hoe kan ik een verwijderd bestand terug …
·Hoe System Restore een Dell Latitude D82…
·Hoe Vista Verteller tekst Start to Voice…
·Hoe je naar Systeemherstel van Windows D…
·Hoe naar Access 2007 Password Recovery 
·Hoe helpt computer in het onderwijs? 
Copyright © Computer Kennis https://www.nldit.com