Po prostu szukam prostego samouczka / przykładu, aby skierować mnie we właściwym kierunku, nie mogę znaleźć dobrego, prostego.
Szukam samouczka, który wyjaśnia, w jaki sposób dzielić pamięć (nie używając potoków i plików, ale rzeczywistej pamięci) między proces nadrzędny i podrzędny (przy użyciu fork) w systemie UNIX (Solaris) w C.
Doceniam twoją pomoc,
Dziękuję Ci bardzo,
Jary
Odpowiedzi:
2 dla odpowiedzi № 1Musisz wybrać opcje:
Najpierw możesz przydzielić i dołączyć pamięć współdzieloną, a następnie wykonać rozwidlenie.
Możesz przydzielić pamięć współdzieloną, rozwidlić proces potomny, a następnie dołączyć do pamięci współdzielonej w obu procesach.
Pierwsza opcja jest prawdopodobnie łatwiejsza. Może wyglądać następująco:
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
....
int size = 32000;
/* allocate and attach shared memory */
int shmID = shmget(IPC_PRIVATE, size, 0600);
void* shmPtr = shmat(shmId, NULL, 0);
/* fork child process */
pid_t pID = fork();
if (pID == 0)
{
/* child */
... do something with shmPtr ...
/* detach shared memory */
shmdt(shmPtr);
}
else
{
/* parent */
... do something with shmPtr ...
/* detach shared memory */
shmdt(shmPtr);
}