Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C shmat()在子进程中使用时返回错误_C - Fatal编程技术网

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

C shmat()在子进程中使用时返回错误,c,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;

我试图在子进程中使用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");
}
if((p_id=fork())<0)
{
佩罗尔(“福克”);
返回1;
}
如果(p_id==0)
{
int元素=-1;
内部*正面;
int*队列[100];
内部*后部;
键1=5678;
int queue_index=0,ii;

对于(queue_index=0;queue_index)当系统调用返回一个错误时,您应该检查它是什么错误。使用例如打印一个关于错误的漂亮的描述性字符串来执行此操作。或者使用并传递(这是包含实际错误代码的变量)来打印它。当系统调用返回错误时,您应该检查它是什么错误。使用例如打印有关错误的漂亮描述性字符串来执行此操作。或者使用并传递(这是包含实际错误代码的变量)来打印它。