首页 > 代码库 > 一个共享内存的例子

一个共享内存的例子

#include <iostream>#include <sys/shm.h>using namespace std;class Test{private:	int status;public:	Test():status(0){}	Test(const int& s):status(s){}	void init(){status = 0;}	int getStatus(){ return status; }		void setStatus(const int& s){ status = s; }	};int main(){	key_t key;	int shmid;		key = ftok("/home/yu/shm/ipc",‘R‘);	shmid = shmget(key,1024,IPC_CREAT|0604);	int p = fork();	if(p>0)	{		sleep(2);		cout<<"father wake up"<<endl;		Test *t = (Test*)shmat(shmid,0,0);		cout<<t->getStatus()<<endl;		shmdt((void*)t);	}else	{		Test *t = (Test*)shmat(shmid,0,0);		t->init();		t->setStatus(200);		cout<<"child set"<<endl;	}}

  这个例子可以直观的看到如何将一个对象放进共享内存,就是把共享内存所指向的那一段空间转成我们的对象所存放的结构,然后就可以操作了。

一个共享内存的例子