【发布时间】:2013-10-05 14:28:17
【问题描述】:
我有需要在子进程和父进程之间共享的后指针和前指针。
front_ptr=(int *) shmat(shmid1,0,0);
rear_ptr=(int *) shmat(shmid1,0,0);
front=rear=-1;
front_ptr=&front;
rear_ptr=&rear;
pid1=fork();
if(pid1==0){
while(1){
wait(semid);
printf("Inside wait checker\n");
printf(" rear is %d \n",*rear_ptr);
signal(semid);
sleep(1);
}
}
else{
pid2=fork();
if(pid2==0){
while(1){
wait(semid);
printf(" rear is %d \n",*rear_ptr);
signal(semid);
sleep(1);
}
}
else{
while(1){
wait(semid);
printf("Insert\n");
insert(1,rear_ptr,front_ptr);
printf("rear is %d \n",*rear_ptr);
signal(semid);
sleep(1);
}
}
}
在插入块中,它打印正确的后指针,但其他两个进程将后打印为 -1 而不是更新的值。这里造成了什么问题?
【问题讨论】:
标签: c pointers ipc shared-memory