fork()

Fórumok

fork()

Hozzászólások

Hellosztok!
Lenne egy kerdesem: ha forkolok egy uj child process-t akkor hogyan tudnam elerni a parent memoriajat, konkretan azok valtozoit kellene irni olvasni, hogy azutan a parent a modositott ertekeket hasznalja. Ezt hogyan tudnam megoldani?
elore is koszonom.
-raven-

[quote:0978316203="raven"]ha forkolok egy uj child process-t akkor hogyan tudnam elerni a parent memoriajat, konkretan azok valtozoit kellene irni olvasni, hogy azutan a parent a modositott ertekeket hasznalja.

A child orokli a parent valtozoit, azaz olvasni tudnad, de ha az erdekel, hogy oda-vissza lehessen irni-olvasni, akkor nezd meg az semget/semctl/shmat/shmget/shmctl fuggvenyeket az osztott memoria kezeleserol. Van meg az uzenetvaltas, de szerintem az itt agyuval verebre lenne: msgctl/msgget/msgrecv/msgsnd stb.

Hali!

Nekem a clone() rendszerhívással sikerült eszközölnöm a problémát.

köszi a válaszokat.
a clone az linux specifikus? (mert nekem freebsd-m van)
-raven-

[quote:73032d83b3="raven"]köszi a válaszokat.
a clone az linux specifikus? (mert nekem freebsd-m van)
-raven-

CONFORMING TO
The clone and sys_clone calls are Linux-specific and should not be used
in programs intended to be portable. For programming threaded applica-
tions (multiple threads of control in the same memory space), it is
better to use a library implementing the POSIX 1003.1c thread API, such
as the LinuxThreads library (included in glibc2). See pthread_cre-
ate(3).

Kemenyen Linux-os, tele van raadasul kernel verziokkal; van olyan lehetoseg, amelyik csak 2.6.0-test6 verziotol elerheto. Vagyis Linux alatt sem teljesen compatible, kemenyen fugg a kernel verziojatol. Szerintem maradj az eredeti valaszomban adott lehetosegeknel, hacsak valaki nem tud megjobbat.

kenyelmetlen :S

nem tudsz vmi helyet vagy leirast vagy tutorialt vagy manualt ahol kesz kod van? (abbol jobban ertek)

-raven-

[quote:e80922e7a6="raven"]nem tudsz vmi helyet vagy leirast vagy tutorialt vagy manualt ahol kesz kod van? (abbol jobban ertek)

Holnap megprobalok neked elkuldeni egy peldat, ha talalok. Esetleg code.box.sk, de mindig csak addig jutok el, hogy alaposan korul kellene ott nezni.

azt megkoszonnem.
tovabbi szep napot.
udv, raven

mmap/munmap is megfelelő erre a célra (közös memóriaterület; ha a foglalás fork előtt történik, akkor még a kezdőcím is másolódik). + mmap64

[quote:004099e5ab="raven"]Lenne egy kerdesem: ha forkolok egy uj child process-t akkor hogyan tudnam elerni a parent memoriajat, konkretan azok valtozoit kellene irni olvasni, hogy azutan a parent a modositott ertekeket hasznalja. Ezt hogyan tudnam megoldani?

mmap/munmap, shm*, vagy nem forkolsz, hanem pthreadet hasznalsz, vagy pipe()-okkal oldod meg a dolgot (mondjuk ilyenkor a parentnek figyelnie kell hogy mikor jon adat a childtol, es aszerint allitani a valtozojat)... Szerintem a legegyszerubb, es legportabilisabb megoldas a pthread erre a celra, csak az ugye nem fork() lesz :)

Most igazan nem akarok flamelni, de szerintem erre a legjobb megoldas az osztott memoria.

A pipe tul korulmenyes lenne erre a celra a SYSV messages dolog elavult, a szalak hasznalata pedig sokak szerint (szerintem is), nem tul jo otlet , meg amugyis, ahogy

[quote:47d1d4f91d="algernon"]az ugye nem fork() lesz :)