#include #include #include #include #include #include int main(int argc, char* argv[]) { char *buf; int i; if (argc < 2 ) { printf("Usage: mmapEx \n"); exit(0); } int fd = open(argv[1], O_RDONLY); if ( fd < 0 ) { printf("Unable to open file %s\n", argv[1]); exit(0); } struct stat s; fstat(fd, &s); buf = mmap(NULL, s.st_size, PROT_READ, MAP_PRIVATE, fd, 0); printf("\n\n*** File %s Backwards ***\n\n", argv[1]); for(i = s.st_size - 1; i >= 0; i--) { printf("%c", buf[i]); } printf("\n"); printf("\n\n*** Now Forwards ***\n\n"); for(i = 0; i < s.st_size; i++) { printf("%c", buf[i]); } printf("\n"); printf("\n\n*** Now output whole file with one write statement.***\n\n"); write(1, buf, s.st_size); return 0; }