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

来源:互联网 发布:2014十大网络用语 编辑:程序博客网 时间:2024/06/05 04:21
#include<stdio.h>#include<unistd.h>#include<sys/shm.h>#include<sys/stat.h>#define Maxsize 10typedef 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);        }    }}

原创粉丝点击