#include #include #include #include #include #include #include struct list { char data[500]; }; int main(int argc, char *argv[argc+1]) { size_t len = 10 << 20; int fd = open(argv[1], O_CREAT | O_RDWR, S_IRUSR | S_IWUSR); if (fd == -1) { perror("open"); return EXIT_FAILURE; } if (ftruncate(fd, len) == -1) { perror("truncate"); return EXIT_FAILURE; } struct list *items = mmap(NULL, len, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); if (items == MAP_FAILED) { perror("mmap"); return EXIT_FAILURE; } for (int i = 0; i < 100; i++) { sprintf(items[i].data, "i am item # %d", i); } msync(items, len, MS_SYNC); munmap(items, len); return EXIT_SUCCESS; }