Beste svaret
Gyting er å starte en annen prosess og deretter fortsette med prosessen som gjorde gytingen.
Forking er en spesifikk Unix / Posix-mekanisme som kan brukes til gyting. Forking produserer to nesten identiske versjoner av samme prosess. «Nesten» fordi prosessene kan fortelle om de er den originale eller gaffelversjonen. De kunne så bare fortsette og gjøre forskjellige ting i henhold til den kunnskapen om hvilket tilfelle de er, men den vanligste tingen å gjøre er å umiddelbart få en av tilfeller for å erstatte seg selv med en annen prosess, og gir samme effekt som gyting. Men du trenger ikke til å gjøre det – logikken for begge oppgavene kan være inneholdt i den ene prosessen.
Svar
Process.fork lar deg kjøre rubinkode i en annen prosess. Process.spawn lar deg kjøre et annet program i en annen prosess. I utgangspunktet er Process.spawn som å bruke Process.fork og deretter ringe exec i gaffelprosessen, bortsett fra at det gir deg flere alternativer.
og hvilken er bedre å kjøre et annet program i en underprosess?
Hvis du trenger bakoverkompatibilitet, bruk gaffel + exec da gyte ikke er tilgjengelig i 1.8. Bruk ellers gyte siden det å kjøre et annet program i en underprosess er akkurat det gyte er laget for.
Så vidt jeg forstår godtar Process.fork kodeblokk og Process.spawn tar en systemkommando pluss noen andre parametere.
Nøyaktig.
Når skal jeg bruke den ene i stedet for den andre?
Bruk gaffel hvis du trenger å kjøre vilkårlig rubinkode i en egen prosess (du kan ikke gjøre det med gyte). Bruk gyte hvis du trenger å påkalle et program i en underprosess.