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;
}
本文档详细介绍了两个进程A和B如何通过共享内存进行交互:A进程首先写入一个整数和字符串,然后B进程读取并显示这些内容。展示了ftok、shmget和shmat等系统调用的使用。
815

被折叠的 条评论
为什么被折叠?



