Fork (systémové volání): Porovnání verzí

Z Wikipedie, otevřené encyklopedie
Smazaný obsah Přidaný obsah
m Robot: vhodnější šablona dle žádosti ze dne 25. 4. 2020
Narovnání přesměrování Proces (program)
Řádek 1: Řádek 1:
{{DISPLAYTITLE:fork (systémové volání)}}
{{DISPLAYTITLE:fork (systémové volání)}}
'''fork()''' je v [[Informatika|informatice]] speciální [[systémové volání]] poskytované [[UN*X|unixovým]] [[Jádro (informatika)|jádrem]] [[Operační systém|operačního systému]]. Jeho vyvoláním vznikne z rodičovského [[Proces (program)|procesu]] nový proces (potomek) tak, že se aktuální proces rozdvojí na dva identické procesy (s různými PID) a běh programu pokračuje dalším příkazem ve dvou vzájemně nezávislých větvích. Program může rozlišit, ve které větvi se nachází, podle návratové hodnoty volání. Rodičovskému procesu je vráceno PID nového procesu, zatímco novému procesu je vrácena nula; negativní návratová hodnota signalizuje chybu.
'''fork()''' je v [[Informatika|informatice]] speciální [[systémové volání]] poskytované [[UN*X|unixovým]] [[Jádro (informatika)|jádrem]] [[Operační systém|operačního systému]]. Jeho vyvoláním vznikne z rodičovského [[Proces (informatika)|procesu]] nový proces (potomek) tak, že se aktuální proces rozdvojí na dva identické procesy (s různými PID) a běh programu pokračuje dalším příkazem ve dvou vzájemně nezávislých větvích. Program může rozlišit, ve které větvi se nachází, podle návratové hodnoty volání. Rodičovskému procesu je vráceno PID nového procesu, zatímco novému procesu je vrácena nula; negativní návratová hodnota signalizuje chybu.


V unixových systémech je <code>fork()</code> jediným nástrojem pro vytváření nových procesů, čímž je vytvořena jednotná hierarchie procesů ([[Strom (datová struktura)|strom]] s jediným kořenem s procesem PID=1). Jeho prostřednictvím nevzniká pouze první proces v systému (typicky [[init]]), který je vytvářen přímo jádrem operačního systému při startu systému. Výjimkou jsou též jaderná vlákna ({{Vjazyce2|en|''kernel thread''}}) a klasická [[Vlákno (program)|vlákna]], která vznikají systémovým voláním <code>[[clone (systémové volání)|clone()]]</code>.
V unixových systémech je <code>fork()</code> jediným nástrojem pro vytváření nových procesů, čímž je vytvořena jednotná hierarchie procesů ([[Strom (datová struktura)|strom]] s jediným kořenem s procesem PID=1). Jeho prostřednictvím nevzniká pouze první proces v systému (typicky [[init]]), který je vytvářen přímo jádrem operačního systému při startu systému. Výjimkou jsou též jaderná vlákna ({{Vjazyce2|en|''kernel thread''}}) a klasická [[Vlákno (program)|vlákna]], která vznikají systémovým voláním <code>[[clone (systémové volání)|clone()]]</code>.

Verze z 14. 5. 2021, 06:04

fork() je v informatice speciální systémové volání poskytované unixovým jádrem operačního systému. Jeho vyvoláním vznikne z rodičovského procesu nový proces (potomek) tak, že se aktuální proces rozdvojí na dva identické procesy (s různými PID) a běh programu pokračuje dalším příkazem ve dvou vzájemně nezávislých větvích. Program může rozlišit, ve které větvi se nachází, podle návratové hodnoty volání. Rodičovskému procesu je vráceno PID nového procesu, zatímco novému procesu je vrácena nula; negativní návratová hodnota signalizuje chybu.

V unixových systémech je fork() jediným nástrojem pro vytváření nových procesů, čímž je vytvořena jednotná hierarchie procesů (strom s jediným kořenem s procesem PID=1). Jeho prostřednictvím nevzniká pouze první proces v systému (typicky init), který je vytvářen přímo jádrem operačního systému při startu systému. Výjimkou jsou též jaderná vlákna (anglicky kernel thread) a klasická vlákna, která vznikají systémovým voláním clone().

Související články

Externí odkazy