/ / Udostępnianie pamięci pomiędzy procesami nadrzędnymi i potomnymi w systemie Solaris (w C) - c, solaris, pamięć dzielona

Współużytkowanie pamięci w procesie nadrzędnym i podrzędnym w systemie Solaris (w języku C) - c, solaris, pamięć współużytkowana

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 № 1

Musisz 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);
}