日期:2014-05-16  浏览次数:20954 次

共享内存存取结构体
两个程序,第一个向共享内存里存链表结构体,第二个读取数据,但是读取总是报错。
希望大家帮助。
下面是第二个程序,在key=101的里面存了共享链表的头地址
#include   <stdio.h>
#include   <sys/shm.h>
#include   <sys/ipc.h>


typedef   struct   _LinkNode
{
void   *buff;
struct   _LinkNode   *next;
}LinkNode;

main()
{
int   shm_id,*shm_addr;
LinkNode   *ptr;
shm_id=shmget(101,64,0777);
//printf( "%p\n ",shm_id);
shm_addr=shmat(shm_id,NULL,0);
printf( "shm_addr=%d\n ",*shm_addr);

shm_id=shmget(*shm_addr,1024,0777);
ptr=shmat(shm_id,NULL,0);
printf( "ptr=%X\n ",ptr);

printf( "%d\n ",__LINE__);
printf( "ptr-> buff=%X\n ",ptr-> buff);
printf( "%s\n ",ptr-> buff);//这里报错
printf( "%d\n ",__LINE__);
ptr=ptr-> next;
printf( "ptr=%X\n ",ptr);
//printf( "%s\n ",ptr-> next-> buff);
}



------解决方案--------------------
printf( "%s\n ",ptr-> buff);//这里报错

printf( "%s\n ",(char *)(ptr-> buff) );
试试看

我的电脑编译没有错,gcc4.0.3下