heja programiki z pamieci wspoldzielonej, i mam provlem pozniej 2 pliki write.c i read.c plik write.c zapisuje do pamieci inta i chara i pozniej swieta petla while(1)
uruchmiamy programik read.c i qrde powinien zczytac i inta z chara z pamieci wspoldzielonej a ten dran pobiera mi tylko INTA :( ma moze ktos jakis pomysl?
ponizej zrodla
write.c
#include <stdlib.h>
#include <stdio.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#define KLUCZ 100
int main (void){
struct semaforek{
int *wartosc;
char *tekst;
};
int shid;
struct semaforek semafor;
shid = shmget(KLUCZ,11,0777 | IPC_CREAT);
if (shid == -1){
perror("shmget");
exit(1);
}
semafor.tekst = (char*)shmat(shid, NULL,0);
semafor.wartosc = (int*)(shmat)(shid, NULL, 0);
*semafor.wartosc = 8;
semafor.tekst = "tekst";
printf("%d %s\n",*semafor.wartosc, semafor.tekst);
while(1);
return 1;
}
read.c
#include <stdlib.h>
#include <stdio.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#define KLUCZ 100
int main (void){
struct semaforek{
int *wartosc;
char *tekst;
};
int shid;
struct semaforek semafor;
shid = shmget(KLUCZ,11,0777);
if (shid == -1){
perror("shmget");
exit(1);
}
semafor.wartosc = (int*)shmat(shid, NULL, 0);
semafor.tekst = (char*)shmat(shid, NULL,0);
printf("%d %s\n",*semafor.wartosc,semafor.tekst);
return 1;
}