// Разделяемая память Posix в Linux // Программа из учебника "Системное программирование в среде Linux", Гунько А.В., стр. 134 // Название: shmwrite.c // Описание: запись в сегмент разделяемой памяти //pxshm/shmwrite.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 *ptr; if (argc != 2) { printf("usage: shmwrite \n"); exit(-1); } /* open, определяем размер, отображаем в память */ fd = shm_open(argv[1], O_RDWR, FILE_MODE); fstat(fd, &stat); ptr = mmap(NULL, stat.st_size, PROT_READ | PROT_WRITE, 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++) *ptr++ = i % 256; exit(stat.st_size); }