//父子进程共享内存
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <string.h>
#include <sys/ipc.h>
#include <sys/shm.h>
void main()
{
printf("\n");
printf("共享内存\n");
sleep(1);
int addr;
char *paddr,*saddr;
addr=shmget(IPC_PRIVATE,1024,0);//创建共享内存
if(fork())
{
if((paddr=shmat(addr,0,0))>0) //映射
printf("parents map success\n");
else
{
printf("map failure!\n");
exit(1);
}
strncpy(paddr,"hello",1024);
printf("parents write hello!\n");
if(shmdt(paddr)==0)
printf("parents cancle map success!\n");
else
printf("cancle map failure!\n");
wait(NULL);
exit(0);
}
else
{
sleep(2);
if((saddr=shmat(addr,0,0))>0) //映射
printf("son map success\n");
else
{
printf("map failure!\n");
exit(1);
}
printf("son read=%s\n",saddr);
if(shmdt(saddr)==0)
printf("son cancle map success!\n");
else
printf("cancle map failure!\n");
wait(NULL);
exit(0);
}
}
linux sharememory
最新推荐文章于 2024-04-17 16:50:37 发布