共享内存 - 2D阵列

时间:2017-09-28 02:04:03

标签: c arrays syntax shared-memory

我正在请求协助我正在进行的项目。这是我的操作系统课程的家庭作业。我不是在寻找答案,只是一个方向或者一些语法澄清。我们需要将共享文档(每行一个字符串)读入共享内存。然后,我们分叉过程来检查每一行,看它是不是回文。我正在坚持的部分是将2d数组放入共享内存。我将发布我已经拥有的代码段。我不断收到seg错误。非常感谢任何帮助。

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<errno.h>
#include<math.h>
#include<sys/shm.h>
#include<sys/stat.h>
#include<sys/wait.h>

int main (int argc, char *argv[]){

    int i = 0, j = 0;
    int id = 0;
    char (*shmPtr)[3];

    if ((id = shmget(IPC_PRIVATE, 1024, IPC_CREAT | 0666) == -1)){
        perror("Failed to create shared memory segment");
        return 1;
    }

    shmPtr = shmat(id, NULL, 0);


    for (i = 0; i < 3; i++){
        for (j = 0; j < 3; j++){
            shmPtr[i][j] = 'j';
        }
    }

    return 0;
}

我确信这是一团糟。我不知道如何声明指针数组,如何与附加到共享内存的文件进行交互等。再次,我不是在寻找答案,而是一些语法澄清和一些解释,如果有人愿意的话。我已经能够存储单个变量并在共享内存中检索它们,但是数组正在杀死我。我非常感谢您提前提供的帮助。

编辑:更新代码到Minimal,Complete和Verifiable示例取出文件输入,因为我的问题似乎是在二维数组的上下文中存储共享内存中的任何内容。我确信它的一些语法我错了......

0 个答案:

没有答案