在子进程中使用时,shmat()返回错误

时间:2016-08-25 11:07:49

标签: c

我正在尝试在子进程中使用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

0 个答案:

没有答案