LINUX.ORG.RU

Ответ на: комментарий от no-dashi

А не подскажешь как это использовать ?

anonymous
()

Разместить эту переменную в разделяемой памяти и хорошо подумать об атомарном доступе - если это, скажем, строка, то один процесс имеет шансы считать "полуфабрикат", если другой процесс в это же время строку изменяет.

Если допустимо использовать нити (threads), то задача решается с помощью ряда хорошо оотработанных механизмов.

anonymous
()

память надо выделять не при помощи malloc а при помощи mmap() с флагами MAP_SHARED && MAP_ANONYMOUSLY

вобщем man mmap

cvv ★★★★★
()

typedef struct { . . . } sharedvar_t;

. . .

sharedvar_t *sharedvar;

sharedvar=mmap(0,sizeof(sharedvar_t),PROT_READ|PROT_WRITE,MAP_SHARED|MAP_ANONYMO US,0, 0);

. . .

fork();

Усе, sharedvar видна из обоих процессоров

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

Це называеться як мед так и ложкою ;-))

cvv ★★★★★
()

Используй mmap. Но тебе придется юзать так же семафоры и или мьютексы для того чторбы избежать гонок.. Имхо в SYSV это не очень удобно использовать. Мьютексы в стиле позикс удобнее (pthread_mutex_t), для тех кто не знает их можно использоватьм между несколькими процессами ( а не только потоками), но не знаю насколько это переносимо. =)

PS А ты уверен что нельзя обойтись потоками? Хотя иногда процессы удобнее.

OxiD ★★★★
()
Ответ на: комментарий от OxiD

Спасибо всем, на будущее запомню, а тут обошелся и без общих данных

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.