#include #include #include #include #include #include #include #include #include typedef struct { char c; double d; } data; int main() { int *a; int size = 15; key_t key_arr = ftok("./shm_1.c", 11); int shmid_arr = shmget(key_arr, size * sizeof(int), 0600 | IPC_CREAT); if(shmid_arr == -1) { perror("Error creating shm"); exit(1); } a = (int*) shmat(shmid_arr, NULL, 0); for(int i = 0; i < size; i++) { a[i] = 2 * i; } data *d; key_t key = ftok("./shm_1.c", 257); int shmid = shmget(key, sizeof(data), 0600 | IPC_CREAT); if(shmid == -1) { perror("Error creating shm"); exit(1); } d = (data*) shmat(shmid, NULL, 0); if(d == (void *) -1) { perror("Error attaching data"); exit(1); } d->c = 'b'; d->d = 3.141592653; shmdt(a); shmdt(d); return 0; }