您的位置:首页 > 其它

父进程利用fork()函数创建子进程并且利用shared_memory进行通信的实例

2017-11-17 20:20 411 查看
#include<stdio.h>
#include<unistd.h>
#include<sys/shm.h>
#include<sys/stat.h>
#define Maxsize 10
typedef struct
{
int a[Maxsize];
int length;
}A;
int main()
{
int segment_id,fp;
A* shared_mem;
segment_id=shmget(IPC_PRIVATE,sizeof(A),S_IRUSR|S_IWUSR);
fp=fork();
if(fp==0)//说明是子进程
{
printf("i am son!\n");
shared_mem=(A *)shmat(segment_id,NULL,0);
shared_mem->a[0]=4;
shared_mem->a[1]=1;
shared_mem->length=2;
shmdt(shared_mem);
}
else if(fp>0)
{
printf("i am father\n");
for(int i=0;i<2;i++)
{
wait(NULL);
shared_mem=(A *)shmat(segment_id,NULL,0);
printf("1 %d  2 %d",shared_mem->a[0],shared_mem->a[1]);
printf("length is %d",shared_mem->length);
shmdt(shared_mem);
shmctl(segment_id,IPC_RMID,NULL);
exit(0);
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: