共享内存程序在 c 中不起作用

shared memory programme is not working in c

有两个程序,一个是调用服务器,将内容放入共享内存中,另一个是客户端,它从共享内存中接收内容,这两个程序都成功连接到共享内存,但数据未显示在客户端中边.

Client.c

#include<fcntl.h>
#include<sys/ipc.h>
#include<sys/shm.h>
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);
}

Server.c

#include<fcntl.h>
#include<sys/ipc.h>
#include<sys/shm.h>
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);
}

你的主要问题是:

data+=c[i];

这是做指针运算,推进data,根本不是你想要的。将其替换为:

data[i] = c[i];

其他问题:

  • mainreturnsint,不作废。如果不需要参数计数和值,请使用 int main() { ... }(为了避免警告,您应该将 way 调高)。
  • 您缺少 #include <stdio.h> printf
  • memset
  • 你缺少 #include <string.h>