fork()

 ( raven | 2004. augusztus 22., vasárnap - 21:09 )

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

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.[/quote:0978316203]
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-[/quote:73032d83b3]
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)[/quote:e80922e7a6]
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?
[/quote:004099e5ab]

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 [b:47d1d4f91d] szerintem [/b:47d1d4f91d] 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), [url=http://www.kuro5hin.org/?op=displaystory;sid=2002/11/18/22112/860]nem tul jo otlet [/url], meg amugyis, ahogy

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