#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); printf("Arr: "); for(int i = 0; i < size; i++) { printf("%3d", a[i]); } printf("\n"); 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); } printf("c = %c\nd = %lf\n", d->c, d->d); shmdt(a); shmdt(d); return 0; }