Общая память Linux. Отправка нескольких сообщений.
Эта программа генерирует два сообщения в общей памяти. Я хочу, чтобы сообщения хранили разные данные. Когда я запускаю эту программу я получаю вот это:
Данные, записанные в сообщении 1: это сообщение 1
Данные, записанные в сообщении 2: это сообщение 1
Но в нем не должно быть текста стр2 потому что строка "это сообщение 1" записывается только в ул.
Программа печатает в str2 то же сообщение, что и str. Как это исправить?
#include <sys/ipc.h> #include <sys/shm.h> #include <stdio.h> int main() { //MESSAGE1 // ftok to generate unique key key_t key = ftok("shmfile",65); // shmget returns an identifier in shmid int shmid = shmget(key,1024,0666|IPC_CREAT); // shmat to attach to shared memory char *str = (char*) shmat(shmid,(void*)0,0); strcpy(str,"This is message 1"); printf("Data written in message 1: %s\n",str); //MESSAGE2 // ftok to generate unique key key_t key2 = ftok("shmfile2",77); // shmget returns an identifier in shmid int shmid2 = shmget(key2,1024,0666|IPC_CREAT); // shmat to attach to shared memory char *str2 = (char*) shmat(shmid2,(void*)0,0); printf("Data written in message2: %s\n",str2); return 0; }
Что я уже пробовал:
Я пытался использовать разные ключи, разные shmid, но опять же второе сообщение имеет те же данные, что и первое. И если я пишу что-то в str2, это перезаписывает первое сообщение str. У меня есть reader.c, где я хочу напечатать два разных сообщения.