Paras vastaus
Kutuminen aloittaa toisen prosessin ja jatkuu sitten kutun suorittaneen prosessin kanssa.
Haarukka on erityinen Unix / Posix-mekanismi, jota voidaan käyttää kutemaan. Forking tuottaa kaksi lähes identtistä versiota samasta prosessista. ”Lähes”, koska prosessit voivat selvittää, ovatko ne alkuperäinen vai haaroitettu versio. He voisivat sitten vain jatkaa, tekemällä erilaisia asioita sen tietämyksen mukaan, missä tapauksessa he ovat, mutta yleisin tehtävä on saada heti yksi tapauksia korvata itsensä toisella prosessilla, mikä tuottaa saman vaikutuksen kuin kutu. Mutta sinun ei tarvitse tehdä niin – molempien tehtävien logiikka voisi sisältyä yhdessä prosessissa.
Vastaus
Process.fork antaa sinun suorittaa ruby-koodin toisessa prosessissa. Process.spawn-ohjelman avulla voit suorittaa toisen ohjelman toisessa prosessissa. Pohjimmiltaan Process.spawn on kuin käyttää Process.forkia ja kutsua sitten exec haarautuneessa prosessissa, paitsi että se antaa sinulle enemmän vaihtoehtoja.
ja kumpi on parempi suorittaa toinen ohjelma aliprosessissa?
Jos tarvitset taaksepäin yhteensopivuutta, käytä fork + exec -ohjelmaa, koska spawn ei ole saatavana versiossa 1.8. Muussa tapauksessa käytä kutua, koska toisen ohjelman suorittaminen aliprosessissa on juuri sitä, mikä kutu on tehty.
Sikäli kuin ymmärrän, Process.fork hyväksyy koodilohkon ja Process.spawn vie järjestelmän komennon ja joitain muita parametreja.
Täsmälleen.
Milloin minun pitäisi käyttää yhtä toisen sijaan?
Käytä haarukkaa, jos haluat suorittaa mielivaltaisen ruby-koodin erillisessä prosessissa (et voi tehdä sitä kutemalla). Käytä kutua, jos haluat käynnistää sovelluksen aliprosessissa.