您的位置:首页 > 其它

共享内存实现父子进程间通讯

2014-06-04 13:36 387 查看
//共享内存实现父子进程间通讯

//2013-10-30

//yang

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<sys/ipc.h>

#include<sys/shm.h>

int main(void)

{

int shmid,pid=0,stop=3;

char *shm_p=NULL;

shmid = shmget(123456,2028,0600|IPC_CREAT);
//创建共享内存

if(shmid == -1)

{

perror("shmget");

return 1;

}

shm_p = shmat(0600|IPC_CREAT,NULL,0);
//对共享内存的映射实现父子进程可以调用内存

if(shm_p == NULL)

{

perror("shmat");

return 1;

}

pid = fork();
//创建进程

if(pid < 0)

{

printf("fork error");

}

if(pid == 0)
//子进程

{

shm_p =(char *)malloc(strlen("hello...属于子进程")+1);

while(shm_p[0] != 'h')

{

memset(shm_p,'\0',strlen("hello...属于子进程")+1);

memcpy(shm_p,"hello...属于子进程",strlen("hello...属于子进程")+1);

}

puts(shm_p);

exit(stop);

}

else //父进程

{

wait(&stop);

//sleep(2);

shm_p =(char *)malloc(strlen("world...属于父进程")+1);

while(shm_p[0] != 'w')

{

memset(shm_p,'\0',strlen("world...属于父进程")+1);

strcat(shm_p,"world...属于父进程");

}

}

puts(shm_p);

free(shm_p);

shm_p = NULL;

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