Legjobb válasz
Az ívás egy másik folyamatot indít, majd folytatja az ívást végző folyamatot.
A villa egy speciális Unix / Posix mechanizmus, amely felhasználható az íváshoz. A Forking ugyanannak a folyamatnak két közel azonos verzióját állítja elő. „Közel”, mert a folyamatok képesek megmondani, hogy az eredeti vagy a villás verzióról van-e szó. Ezután folytathatnák, és folytathatnának különböző dolgokat, különböző tudnivalók szerint, annak a tudatnak megfelelően, hogy melyik esetről van szó, de a leggyakoribb dolog az, olyan esetekre, amikor más eljárással helyettesíti magát, ugyanaz a hatás, mint az ívás. De nem kell ehhez tennie – mindkét feladat logikája benne lehet az egyetlen folyamatban.
Válasz
A Process.fork lehetővé teszi rubin kód futtatását egy másik folyamatban. A Process.spawn lehetővé teszi egy másik program futtatását egy másik folyamatban. Alapvetően a Process.spawn olyan, mint a Process.fork használata, majd az exec meghívása a villás folyamatban, azzal a különbséggel, hogy ez több lehetőséget biztosít.
és melyik jobb futtatni egy másik programot egy alfolyamatban?
Ha visszafelé kompatibilitásra van szüksége, használja a fork + exec programot, mivel a spawn nem érhető el az 1.8 verzióban. Egyébként használja az ívást, mivel egy másik program futtatása egy alfolyamatban pontosan az, amire az ívás készült.
Ha jól értem, a Process.fork elfogadja a kódblokkot, a Process.spawn pedig egy rendszerparancsot és néhány egyéb paramétert vesz fel.
Pontosan.
Mikor használjam az egyiket a másik helyett?
Használja a villát, ha önkényes rubinkódot kell futtatnia külön folyamatban (ezt nem lehet spawn-val megtenni). Használja a spawn-t, ha alkalmazást kell meghívnia egy alfolyamatban.