www.wikidata.uk-ua.nina.az
V programuvanni konkretno v konteksti operacijnih sistem Unix i UNIX podibnih sistem fork ce sistemnij viklik yakij stvoryuye novij proces yakij ye kopiyeyu batkivskogo procesu Ce zazvichaj sistemnij viklik yakij realizovanij na rivni yadra Fork ce osnovnij i istorichno yedinij metod stvorennya procesu v UNIX podibnih operacijnih sistemah Zmist 1 Oglyad 2 Komunikaciya 3 Vikoristannya u programah 3 1 Priklad na C 4 PrimitkiOglyad RedaguvatiBagatozadachna operacijna sistema zazvichaj povinna mati yakij nebud mehanizm stvorennya novogo procesu na osnovi vzhe zapushenogo abo povnistyu novogo U bagatoh Unix podibnih operacijnih sistemah yedinim sposobom stvorennya novogo procesu i ye sistemnij viklik fork novishi sistemi mozhut mati takozh posix spawn Dlya togo shob proces rozpochav vikonannya inshoyi programi vin spershu stvoryuye kopiyu samogo sebe Potim cya kopiya yaka nazivayetsya dochirnij proces vikonuye sistemnij viklik exec dlya zapusku v ramkah sebe inshoyi programi vin pripinyaye vikonannya svoyeyi poperednoyi programi i pochinaye vikonuvati inshu Unix sistemi mayut funkciyu pidtrimki virtualnoyi pam yati praktichno vsi suchasni varianti yiyi Operaciya fork stvoryuye okremij adresnij prostir dlya dochirnogo procesu Cej dochirnij proces matime tochnu kopiyu vsih segmentiv pam yati batkivskogo procesu hocha yaksho realizuyetsya semantika kopiyuvannya pri zapisi fizichna pam yat faktichno ne bude skopijovana Zamist togo storinki virtualnoyi pam yati oboh procesiv mozhut zvertatisya do odnih i tih samih storinok fizichnoyi pam yati doki odin iz nih ne pochne pisati do takoyi storinki todi vona kopiyuyetsya Taka optimizaciya maye velike znachennya dlya zagalnogo vipadku koli fork vikoristovuyetsya v poyednanni z viklikom exec dlya togo shob pochati vikonannya novoyi programi zazvichaj dochirnij proces vikonuye lishe nevelikij nabir komand pered tim yak vin pripinyaye vikonannya svoyeyi programi na korist programi yaka bude zapushena i vona potrebuye duzhe malo yaksho potrebuye struktur danih vid svogo batkivskogo procesu Koli proces viklikaye fork jogo vvazhayut batkivskim procesom i fork povertaye PID novostvorenogo dochirnogo procesu Vseredini novostvorenogo procesu fork povertaye 0 U vipadku nevdachi povertayetsya 1 a v zminnu a href Errno html class mw redirect title Errno errno a pomishayetsya kod pomilki 1 Pislya komandi fork obidva procesi ne lishe vikonuyut odnu i tu samu programu ale voni prodovzhuyut vikonannya tak nibi obidvi vikonali sistemnij viklik Voni mozhut pereviryati znachennya yaki povertaye viklik dlya viznachennya yihnogo statusu chi to dochirnij proces chi batkivskij i diyati vidpovidno Sistemnij viklik fork isnuvav z pershoyi versiyi operacijnoyi sistemi Unix 2 sho zapozichenij iz rannoyi sistemi GENIE 3 Fork vhodit do standartu POSIX 1 Komunikaciya RedaguvatiDochirnij proces startuye iz kopiyeyu batkivskih fajlovih deskriptoriv 1 Dlya spilkuvannya mizh procesami batkivskij proces chasto bude stvoryuvati konveyer abo dekilka konveyeriv a pislya porodzhennya procesiv zakriye kinci konveyeriv yaki bilshe ne potribni 4 Vikoristannya u programah RedaguvatiPriklad na C Redaguvati Nastupnij variant programi Hello World porodzhuye za dopomogoyu fork dochirnij proces yakij vivodit na ekran povidomlennya i zavershuye vikonannya Batkivskij proces ne vikonuye niyakoyi korisnoyi roboti vin prosto chekaye na zavershennya dochirnogo procesu include lt sys types h gt pid t include lt sys wait h gt waitpid include lt stdio h gt printf perror include lt stdlib h gt exit include lt unistd h gt exit fork int main void int st pid t pid fork switch pid case 1 fork povertaye 1 koli stalasya pomilka perror fork failed exit EXIT FAILURE break case 0 Koli fork povertaye 0 ce oznachaye sho buv stvorenij dochirnij proces printf Hello from the child process n exit EXIT SUCCESS exit nedostupna tut tomu treba vikoristovuvati exit break default Koli fork povertaye dodatne chislo mi u batkivskomu procesi void waitpid pid amp st 0 a znachennya yake povertayetsya ce PID identifikator procesu novostvorenogo dochirnogo procesu break return EXIT SUCCESS Primitki Redaguvati a b v fork 2 create child process Linux man page Arhiv originalu za 14 bereznya 2016 Procitovano 13 bereznya 2016 Ken Tompson Dennis Ritchi 3 listopada 1971 SYS FORK II en UNIX Programmer s Manual Bell Labs Arhiv originalu za 3 lyutij 2015 https web archive org web 20150203071127 http cm bell labs com cm cs who dmr man21 pdf Procitovano 4 berezen 2015 Ritchie Dennis M Thompson Ken July 1978 The UNIX Time Sharing System Bell System Technical Journal AT amp T 57 6 1905 1929 doi 10 1002 j 1538 7305 1978 tb02136 x Arhiv originalu za 10 gruden 2005 Procitovano 22 kvitnya 2014 a href http linux die net man 2 pipe pipe 2 a storinka dovidki man pro sistemni vikliki GNU Linux angl Otrimano z https uk wikipedia org w index php title Fork sistemnij viklik amp oldid 40073988