programme de mémoire partagée ne fonctionne pas dans c

Il existe deux programmes: un serveur d’appel qui place le contenu dans la mémoire partagée et un autre qui reçoit un contenu de la mémoire partagée dans les deux programmes, il est connecté avec la mémoire partagée mais les données ne sont pas affichées côté client.

Client.c

#include #include #include void main(int argc,char * argv[]) { int shmid=shmget(124,70,0777); char * data; printf("%d\n",shmid); data=shmat(shmid,0,0); printf("%s",data); } 

Serveur.c

 #include #include #include void main(int argc,char * argv[]) { int shmid=shmget(124,70,0777|IPC_CREAT); char * data,*ptr; printf("%d\n",shmid); if((data=shmat(shmid,0,0))==(char *)-1); { printf("No attach\n"); } ptr=data; memset(data,0,1024); printf("%s",data); char c[]="My name is milap pancholi"; int i=0; for(i=0;i<sizeof(c);i++) { printf("%c",c[i]); data+=c[i]; } printf("%s\n",ptr); } 

Votre problème principal est le suivant:

 data+=c[i]; 

Cela fait de l’arithmétique du pointeur, de l’avancement des data , pas du tout ce que vous voulez. Remplacez-le par:

 data[i] = c[i]; 

Autres issues:

  • main retours main int , non annulés. Utilisez int main() { ... } si vous n’avez pas besoin des arguments count et values ​​(pour éviter les avertissements, que vous devez augmenter).
  • Vous manquez #include pour printf
  • Vous manquez #include pour memset