当前位置: 技术问答>linux和unix
Linux 进程共享内存问题
来源: 互联网 发布时间:2016-12-03
本文导语: 小弟写了一个进程共享内存的代码(如下readc和writec),我先运行./writeread ,再./read;write的时候内容写进去了,read的时候没有内容读出来,这是为什么? //Read.c#include #include #include #include typedef struct{ ...
小弟写了一个进程共享内存的代码(如下readc和writec),我先运行./writeread ,再./read;write的时候内容写进去了,read的时候没有内容读出来,这是为什么?
//Read.c#include
#include
#include
#include
typedef struct{
char name[4];
int age;
}people;
void main(int argc,char** argv)
{
int shm_id,i;
key_t key;
people *p_map;
char* name = "/media/Ubuntu/02_test/IPC_SharedMemory/key.txt";
key = ftok(name,0);
if(-1==key)
perror("ftok error");
shm_id = shmget(IPC_PRIVATE,4096,IPC_CREAT|0600);
if(-1==shm_id)
{
perror("shmget error");
return;
}
p_map = (people*)shmat(shm_id,NULL,0);
if(-1==p_map)
perror("shmat");
for(i=0; i
//Read.c#include
#include
#include
#include
typedef struct{
char name[4];
int age;
}people;
void main(int argc,char** argv)
{
int shm_id,i;
key_t key;
people *p_map;
char* name = "/media/Ubuntu/02_test/IPC_SharedMemory/key.txt";
key = ftok(name,0);
if(-1==key)
perror("ftok error");
shm_id = shmget(IPC_PRIVATE,4096,IPC_CREAT|0600);
if(-1==shm_id)
{
perror("shmget error");
return;
}
p_map = (people*)shmat(shm_id,NULL,0);
if(-1==p_map)
perror("shmat");
for(i=0; i