» »

C++ fork()

C++ fork()

hatch ::

Obstaja kak nadomestek v win32 c++ za unix fork()

Za tiste, ki ne vejo kaj fork naredi.. gre za to da se doloceno proceduro/funkcijo spravi v background... in sicer brez uporabe objektnega programiranja.

wintermute ::

No ja, pri forku gre dejansko za procese. Fork ustvari nov proces... po klicu forka imas v bistvu dva procesa, ki izvajata isti "program", z edino razliko da funkcija fork() vrne procesu-starsu PID otroka, procesu-otroku pa 0. Pravega ekvivalenta fork na Win32 platformi zal nima, ker se win in unix na tem podrocju bistveno razlikujeta. Za take stvari kot se fork uporablja pri Unixu, win32 uporablja multithreading.

Podobna funkcija win32 API-ja bi bila (po imenu sodec) lahko CreateProcess(), ampak to je nekaj cisto drugega, saj ne omogoca "kloniranja" procesov tako kot fork() (po klicu forka nov proces "podeduje" podatke, se pravi spremenljivke pa to, od procesa-starsa).

CreateProcess pa lahko namesto forka enostavno uporabis takrat, ko unix koda v procesu-otroku samo klice eno od exec*() variant, se pravi nekaj takega:


...
/* ta del se "izvede v obeh procesih" (not really) */

if (fork() == 0)
{
/* ta del se izvaja samo v procesu-otroku */
execv(); /* Pazi, exec ne ustvari novega procesa!
Pa se to: ce se exec uspesno izvede,
se izvajanje, ne vrne sem */
}
else
{
/* ta del se izvaja samo v procesu-starsu */
}

/* ta del se izvaja v obeh procesih razen ce se je bil
klic exec* funkcije uspesen, v tem primeru se ta del
izvede samo v procesu starsa */
...


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

c++ fork()

Oddelek: Programiranje
61357 (673) Randomness
»

LibreSSL za zdaj še nevaren

Oddelek: Novice / Varnost
177309 (5923) AndrejO
»

[C] in delo s procesi v Linuxu

Oddelek: Programiranje
132251 (1737) OmegaM
»

[C++]Zagon drugega programa in izvajanje ukaza

Oddelek: Programiranje
111408 (1253) 64202
»

Funkcija za zapret program

Oddelek: Programiranje
151287 (1043) StratOS

Več podobnih tem