共享存储区实现兄弟进程之间通信
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/shm.h>
int shmid;
int main()
{
int id,*viraddr;
shmid=shmget(75,50,IPC_CREAT|0777);
while((id=fork())== -1);
if(id==0)
{
shmid=shmget(75,50,IPC_CREAT|0777);
viraddr=shmat(shmid,0,0);
int i;
for(i=0;i<5;i++)
{
*viraddr=i;
viraddr++;
}
shmdt(viraddr);
exit(0);
}
else
{
while((id=fork())== -1);
int i;
if(id==0)
{
sleep(1);
shmid=shmget(75,50,IPC_CREAT|0777);
viraddr=shmat(shmid,0,0);
for(i=0;i<5;i++)
{
printf("%d\n",*viraddr);
viraddr++;
}
shmdt(viraddr);
exit(0);
}
wait(0);
wait(0);
}
printf("shmid=%d\n",shmid);
shmctl(shmid,IPC_RMID,0);
return 0;
}