我正在尝试在子进程中使用IPC共享内存,这个共享内存在其父进程中创建,具有与子进程中使用的相同的键值。 父进程将一些值存储在共享内存中,我想访问子进程中的这些值。
我为子进程编写了以下代码:
if ((p_id = fork()) < 0)
{
perror("fork");
return 1;
}
if(p_id == 0)
{
int element=-1;
int *front;
int *queue[100];
int *rear;
key1=5678;
int queue_index=0,ii;
for(queue_index=0;queue_index<count_machine_type;queue_index++)
{
if((queue_c[queue_index] = (int *)shmat(shmid[queue_index],0,0))==(int *)-1)
printf("error in shmat queue\n");
key1+=1;
}
if(( front_c = (int *)shmat(shmid_front,0,0))==(int *)-1)
printf("error in shmat front\n");
if(( rear_c = (int *)shmat(shmid_rear,0,0))==(int *)-1)
printf("error in shmat rear\n");
}
子进程无法访问共享内存。
它每次都返回-1
。