Fork is de systeemaanroep waarmee Linux een nieuw proces aanmaakt. Het ouderprocces wordt gekopieerd: het kindproces krijgt een identieke kopie van het geheugen, de open bestanden en de omgevingsvariabelen — maar heeft zijn eigen PID.
Na een fork draaien zowel ouder als kind verder vanaf dezelfde plek in de code. Ze onderscheiden zich doordat fork() in het ouderproces de PID van het kind teruggeeft, en in het kindproces 0.
init (PID 1)
└── bash (PID 100) ←── fork()
└── ls (PID 101) ←── kind
Bijna altijd volgt een exec op een fork: het kindproces vervangt zijn geheugeninhoud door een nieuw programma. Zo start de shell een commando:
fork() → kopie van de shellexec("ls") → kopie wordt lsls klaar isLinux kopieert het geheugen niet meteen bij een fork — het markeert de pagina's als copy-on-write. Pas als ouder of kind iets schrijft, wordt die pagina daadwerkelijk gekopieerd. Dit maakt forken snel en goedkoop.