// Разделяемая память Posix в Linux // Программа из учебника "Системное программирование в среде Linux", Гунько А.В., стр. 134 // Название: shmread.c // Описание: чтение из сегмента разделяемой памяти //pxshm/shmread.c #include #include #include #include #include #include #include #include #include #define FILE_MODE S_IRUSR | S_IWUSR int main(int argc, char **argv) { int i, fd; struct stat stat; unsigned char c, *ptr; if (argc != 2) { printf("usage: shmread \n"); exit(-1); } /* вызываем open, узнаем размер, отображаем в память*/ fd = shm_open(argv[1], O_RDONLY, FILE_MODE); fstat(fd, &stat); ptr = mmap(NULL, stat.st_size, PROT_READ, MAP_SHARED, fd, 0); printf("Result:%s\n",strerror(errno)); close(fd); /* проверяем равенства ptr[0] = 0, ptr[1] = 1 и т. д. */ for (i = 0; i < stat.st_size; i++) if ((c = *ptr++) != (i % 256)) printf("ptr[%d] = %d", i, c); exit(0); }