共享内存程序在 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];
其他问题:
main
returnsint
,不作废。如果不需要参数计数和值,请使用 int main() { ... }
(为了避免警告,您应该将 way 调高)。
- 您缺少
#include <stdio.h>
printf
memset
你缺少 #include <string.h>
有两个程序,一个是调用服务器,将内容放入共享内存中,另一个是客户端,它从共享内存中接收内容,这两个程序都成功连接到共享内存,但数据未显示在客户端中边.
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];
其他问题:
main
returnsint
,不作废。如果不需要参数计数和值,请使用int main() { ... }
(为了避免警告,您应该将 way 调高)。- 您缺少
#include <stdio.h>
printf
memset
你缺少
#include <string.h>