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

米拉普·潘乔利(Milap Pancholi)

有两个程序,一个是呼叫服务器,它将内容放入共享内存中,另一个是客户端,它从共享内存中接收内容,这两个程序都已成功地与共享内存连接,但数据未显示在客户端。

客户端

#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);
}

服务器

#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返回int,不是void。使用int main() { ... }如果你不需要的参数计算和值(以避免警告,你应该把这样了)。
  • 你想念#include <stdio.h>printf
  • 你想念#include <string.h>memset

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C中释放内存不起作用

来自分类Dev

密码程序在C ++中不起作用

来自分类Dev

C中的动态内存分配不起作用

来自分类Dev

重新分配内存在c中不起作用

来自分类Dev

重新分配内存在c中不起作用

来自分类Dev

ftruncate在Mac OS X中的POSIX共享内存上不起作用

来自分类Dev

C程序不起作用

来自分类Dev

FaceBook共享在android中不起作用

来自分类Dev

FaceBook共享在android中不起作用

来自分类Dev

Memcpy在C低级程序中不起作用

来自分类Dev

Memcpy在C低级程序中不起作用

来自分类Dev

我的C程序中的continue语句似乎不起作用

来自分类Dev

C ++中的合并排序程序不起作用

来自分类Dev

相同的代码在共享库中不起作用,但在程序中直接使用时才起作用

来自分类Dev

应用程序支持iTunes文件共享在iOS 10中不起作用

来自分类Dev

引导程序在JSFiddle中不起作用

来自分类Dev

程序在mysql中不起作用

来自分类Dev

如果程序中的条件不起作用

来自分类Dev

程序在FireFox中不起作用

来自分类Dev

串行readline()在程序中不起作用

来自分类Dev

列在引导程序中不起作用

来自分类Dev

C#锻炼程序不起作用

来自分类Dev

Facebook共享不起作用

来自分类Dev

分配内存不起作用

来自分类Dev

共享图像在viber和Facebook中不起作用

来自分类Dev

共享字典似乎在Python多重处理中不起作用

来自分类Dev

Facebook共享URL在移动设备中不起作用

来自分类Dev

尝试捕获在共享库中不起作用?

来自分类Dev

Red5屏幕共享在Ubuntu中不起作用