>>Как отобразить двумерный массив в разделяемую память процесса ?
>
>а в чем собственно проблемы с отображением? конкретнее please.
>
>// wbr
у меня есть двумерный массив необходимо его отобразить в память(желательно средствами system V), привожу код прогу, необходимо как-то выделить память для каждой строки массива, (сейчас в данной проге segmentation fault)
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <stdio.h>
#include <errno.h>
int main()
{
int **array; //будущее двумерного массива
int shmid;
int new = 1;
char pathname[] = "1.c";
key_t key;
if((key = ftok(pathname,0)) < 0){
printf("Can\'t generate key\n");
exit(-1);
}
int i;
for(i=0;i<4;i++) {
array[i][0] = malloc(sizeof(int*));
}
if((shmid = shmget(key, 3*sizeof(int*), 0666|IPC_CREAT|IPC_EXCL))<0){
if(errno != EEXIST){
printf("Can\'t create shared memory\n");
exit(-1);
} else {
if((shmid = shmget(key, 3*sizeof(int*), 0)) < 0){
printf("Can\'t find shared memory\n");
exit(-1);
}
new = 0;
}
}
if((array = (int **)shmat(shmid, NULL, 0)) == (int **)(-1)){
printf("Can't attach shared memory\n");
exit(-1);
}
if(new){
array[0][0] = 1;
array[1][0] = 0;
array[2][0] = 1;
} else {
array[0][0] += 1;
array[2][0] += 1;
}
printf("%d,%d,%d" array[0], array[1], array[2]);
if(shmdt(array) < 0){
printf("Can't detach shared memory\n");
exit(-1);
}
return 0;
}