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.