共享内存存取结构体
两个程序,第一个向共享内存里存链表结构体,第二个读取数据,但是读取总是报错。
希望大家帮助。
下面是第二个程序,在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下