/* Tests simple manipulation with a shared memory segment. */ #include <stdio.h> #include <sys/shm.h> #define SEGMENT_SIZE 167 int main(int argc, const char *argv[]) { int shmid = shmget(IPC_PRIVATE, SEGMENT_SIZE, IPC_CREAT | SHM_R | SHM_W); if (shmid < 0) { perror("shmget()"); return 1; } void *addr = shmat(shmid, NULL, 0); if (addr == (void *) -1) { perror("shmat()"); return 2; } struct shmid_ds stats; int ret = shmctl(shmid, IPC_STAT, &stats); if (ret != 0) { perror("shmctl(IPC_STAT)"); return 3; } printf("segment size: %zu\n", stats.shm_segsz); ret = shmdt(addr); if (ret != 0) { perror("shmdt()"); return 4; } ret = shmctl(shmid, IPC_RMID, NULL); if (ret != 0) { perror("shmctl(IPC_RMID)"); return 5; } return 0; }