內存共享基本演示

發送端: 申請共享內存區域並寫入數據到共享內存區域

sender.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/shm.h>

#define BUFSIZ 102400
int main()
{
	int shmid=-1;
	char * viraddr;
	char buffer[BUFSIZ];
	key_t shmkey =ftok("/home/cip/test/", 0);
	shmid = shmget(shmkey,BUFSIZ, IPC_CREAT|0666); //申請共享區域
	viraddr=(char*)shmat(shmid,0,0); //附件共享地址到將本進程
	while(1)
	{
		puts("enter some text:");
		fgets(buffer, BUFSIZ, stdin);
		strcat(viraddr,buffer);添加數據到共享內存中
		if(strncmp(buffer,"end",3)==0)
		{
			break;
		}
	}
	shmdt(viraddr); //撤銷地址映射
	
	return 0;
}


gcc -o send sender.c

 

接收端:

讀取共享區的內容

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/shm.h>

#define BUFSIZ 102400
int main()
{
	int shmid=-1;
	char * viraddr;
	char buffer[BUFSIZ];
	key_t shmkey = ftok("/home/cip/test/", 0);


	shmid = shmget(shmkey,BUFSIZ, IPC_CREAT|0666); //獲取共享區域
	viraddr=(char*)shmat(shmid,0,0);
	printf("Your message is:\n%s", viraddr);
	shmdt(viraddr);
	shmctl(shmid, IPC_RMID,0);
	
	return 0;
}



 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章