MMAP function usage () category: C/C ++ changed from wrox Linux programming # include <unistd. h> # include <stdio. h> # include <sys/Mman. h> # include <fcntl. h> # include <stdlib. h> typedef struct {int integer; char string [24];} record; # define nrecords (100) int main () {record, * mapped; int I, F; file * FP; FP = fopen ("records. dat "," W + "); for (I = 0; I <nrecords; I ++) {memset (& record, 0, sizeof (record )); /* if not cleared, the content is unknown */record. integer = I; sprintf (record. string, "record-% d", I); fwrite (& record, sizeof (record), 1, FP);} fclose (FP ); /* modify 43 records */FP = fopen ("records. dat "," R + "); fseek (FP, 43 * sizeof (record), seek_set); fread (& record, sizeof (record), 1, FP); record. integer = 143; sprintf (record. string, "record-% d", record. integer); fseek (FP, 43 * sizeof (record), seek_set); fwrite (& record, sizeof (record), 1, FP); fclose (FP ); /* modify 43 records */F = open ("records. dat ", o_rdwr); Mapped = (record *) MMAP (0, nrecords * sizeof (record), prot_read | prot_write, map_shared, F, 0); Mapped [43]. integer = 243; sprintf (mapped [43]. string, "record-% d", mapped [43]. integer); msync (void *) mapped, nrecords * sizeof (record), ms_async); munmap (void *) mapped, nrecords * sizeof (record )); close (f); Return 0 ;}