0

子プロセスと親プロセスの間で共有する必要があるリア ポインターとフロント ポインターがあります。

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);
        }
    }
}

Insert ブロックでは、正しいリア ポインターが出力されますが、他の 2 つのプロセスでは、リアは更新された値ではなく -1 として出力されます。ここで引き起こされている問題は何ですか?

4

1 に答える 1