Startpagina > Bestands- en mapbeheer > mkfifo

mkfifo: Creëer een benoemde pipe

`mkfifo` is een commando dat een benoemde pipe (FIFO, First-In, First-Out) aanmaakt. Een benoemde pipe is een speciaal bestand in het bestandssysteem dat fungeert als een communicatiekanaal dat wordt gebruikt om gegevens uit te wisselen tussen verschillende processen. In tegenstelling tot reguliere pipes, kunnen ze worden benaderd via een bestandspad, waardoor onafhankelijke processen gemakkelijk kunnen communiceren.

Overzicht

`mkfifo` maakt een benoemde pipe, een speciaal bestand, aan in het bestandssysteem. Deze pipe fungeert als een communicatiekanaal waarmee twee of meer onafhankelijke processen gegevens kunnen uitwisselen. Wanneer een proces gegevens naar de pipe schrijft, kan een ander proces gegevens uit de pipe lezen, en de gegevens worden verwerkt volgens het FIFO-principe (First-In, First-Out).

Belangrijkste kenmerken

  • Bestaat in het bestandssysteem en is toegankelijk via een pad
  • Biedt een communicatiekanaal tussen onafhankelijke processen
  • Gegevens worden verwerkt volgens het FIFO-principe
  • Nuttig voor het configureren van complexe pipelines in shell-scripts

Belangrijkste opties

Het commando `mkfifo` wordt voornamelijk gebruikt met bestandspaden als argumenten en ondersteunt enkele basale opties.

Aanmaken opties

Gegenereerde opdracht:

Probeer de opdrachtcombinaties.

Uitleg:

`mkfifo` Voer het commando uit.

Combineer deze opties en voer de opdracht virtueel uit met de AI.

Gebruiksvoorbeelden

Demonstreert hoe een benoemde pipe wordt aangemaakt met `mkfifo` en hoe deze wordt gebruikt voor inter-procescommunicatie.

Basis benoemde pipe aanmaken

mkfifo my_pipe

Maakt een pipe met de naam `my_pipe` aan in de huidige directory.

Pipe aanmaken met specifieke permissies

mkfifo -m 600 my_private_pipe

Maakt `my_private_pipe` aan, waar alleen de eigenaar kan lezen en schrijven.

Gegevensoverdracht met een benoemde pipe

mkfifo data_channel
echo "Hello from Terminal 1!" > data_channel &
cat < data_channel

Een voorbeeld van het schrijven van gegevens in de ene terminal en het lezen ervan in een andere terminal. **Terminal 1:** `mkfifo data_channel` `echo "Hello from Terminal 1!" > data_channel` **Terminal 2:** `cat < data_channel`

Gebruik van pipes met achtergrondprocessen

mkfifo background_output
(ls -l; sleep 2; echo "Done listing") > background_output &
cat < background_output

Stuurt de uitvoer van een proces dat op de achtergrond wordt uitgevoerd via een pipe naar een ander commando.

Tips & Aandachtspunten

Belangrijke punten en tips voor het gebruik van benoemde pipes.

Pipe verwijderen

Benoemde pipes kunnen worden verwijderd met het `rm`-commando, net als reguliere bestanden. Het is aan te raden om ongebruikte pipes op te ruimen na gebruik.

  • `rm my_pipe`

Blokkerend gedrag

Benoemde pipes gedragen zich standaard blokkerend. Dit betekent dat een poging om te schrijven (of lezen) wacht totdat de andere kant begint met lezen (of schrijven). Om dit gedrag te vermijden, kunt u het proces op de achtergrond uitvoeren met `cat < my_pipe &` of het openen in niet-blokkerende modus met de `O_NONBLOCK`-vlag.

Gebruik van tijdelijke bestandssystemen

Voor tijdelijk gebruik van pipes is het aan te raden om het `/tmp`-directory te gebruiken of het `mktemp`-commando om pipes met unieke namen aan te maken. Dit voorkomt naamconflicten en zorgt ervoor dat ze automatisch worden opgeruimd bij het opnieuw opstarten van het systeem.



Hétzelfde categoriecommando