PID
= process identification digit, identifikační číslo procesu.
Proces vzniká voláním jádra fork
, které vytvoří kopii původního procesu s novým PID
a vrátí odlišné hodnoty pro potomka (0
- nulu) a rodiče (PID
potomka). Ty tuto hodnotu prozkoumají. Potomek který má spustit nový program obvykle volá exec
a předá mu jako parametr volaný program, vynuluje zásobníky paměti.
Základním procesem je init
, který má PID 1
a zajišťuje spouštění startovacích scriptů. Všechny procesy s výjimkou procesů vytvořených přímo jádrem jsou jeho potomky.
Pokud proces skončí činnost a je připraven k odstranění (má-li zemřít), volá _exit
a dodá ukončovací kód (0
- nula při normálním ukončení). Jeho odstranění musí nejprve potvrdit rodič, což provede voláním wait
. Pokud rodič skončil dřív než potomek, stává se rodičem procesu init
a provede wait
sám. Proces tak může být ukončen (může zemřít).
Jádro každému novému procesu přiřadí PID
, které identifikuje proces po celou dobu jeho života. Pokud chcete proces nějak spravovat, budete si muset jeho PID
zjistit.
Proces také může spustit další proces. Děje se to klonováním stávajícího procesu, přičemž klon následně vymění provozovaný program za jiný. Mezi procesy tak vznikají vztahy rodiče a potomka. PID
potomka je označováno jako PPID
.
Pokud spustíte program z Konzole či terminálu, zpravidla se stane řídícím terminálem procesu a poskytne procesu standardní vstup, standardní výstup a standardní chybový výstup.
PID
konkrétního procesu můžeme zjistit například z výpisu programu ps. Známe-li číslo procesu, pak s ním můžeme (máme-li k procesu vlastnická práva) udělat cokoli - změnit prioritu, přesunout na pozadí či na popředí, pozastavit či zrušit (zabít). Můžeme také zobrazit jeho rodiče i potomky, nároky na paměť i procesor a mnoho dalších informací. Znalost PID
je nezbytná pro řízení procesů.
Pokud z terminálu spustíte program/příkaz, jehož práce trvá déle, zablokujete si okno až do skončení příkazu. Pokud je to vhodné, můžete běh programu přesunout na pozadí.