1. A进程写入一个整型,在该整型后,写入一个字符串
2. B进程将共享内存中的整型以及字符串读取出来;
A进程的发送端代码
#include<stdio.h>
#include<sys/types.h>
#include<sys/ipc.h>
#include<stdlib.h>
#include<string.h>
#include<sys/shm.h>
//a进程
int main(int argc, const char *argv[])
{
//创建共享文件
key_t key =ftok("./",5);
if(key<0)
{
perror("ftok");
return -1;
}
//创建共享内存
int shmid=shmget(key,32,IPC_CREAT|0777);
if(shmid<0)
{
perror("shmget");
return -1;
}
printf("shmid =%d\n",shmid);
//共享内存的映射
void *shmaddr=shmat(shmid,NULL,0);
//写入
int *p=(int*)shmaddr;
*p=666;
char *q=(char*)(p+1);
strcpy(q,"hello");
system("ipcs -m");
return 0;
}
B进程的接收端代码
#include<stdio.h>
#include<sys/types.h>
#include<sys/ipc.h>
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
#include<sys/shm.h>
//b进程
int main(int argc, const char *argv[])
{
//创建共享文件
key_t key =ftok("./",5);
if(key<0)
{
perror("ftok");
return -1;
}
//创建共享内存
int shmid=shmget(key,32,IPC_CREAT|0777);
if(shmid<0)
{
perror("shmget");
return -1;
}
printf("shmid =%d\n",shmid);
//共享内存的映射
void *shmaddr=shmat(shmid,NULL,0);
//du
int *p=(int*)shmaddr;
printf("%d\n",*p);
char *q=(char*)(p+1);
printf("%s\n",q);
system("ipcs -m");
return 0;
}