#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>
#include <sys/stat.h>
int main(int argc, char *argv[])
{
int fd;
char *p;
struct stat sbuf;
printf("file=%s\n", argv[1]);
fd = open(argv[1], O_RDONLY);
if(fd == -1) {
perror("open error");
return -1;
}
if(stat(argv[1], &sbuf) == -1) {
perror("stat error");
return -1;
}
printf("size=%ld\n", sbuf.st_size);
p = (char *)mmap((caddr_t)0, sbuf.st_size, PROT_READ, MAP_SHARED, fd, 0);
if(p == (char *)-1) {
perror("mmap error");
return -1;
} else {
printf("mmap success!\n");
}
unsigned long i, cnt;
i = 0;
cnt = 0;
while(1) {
if(p[i] == 0x0a) {
cnt ++;
}
i ++;
if(i >= sbuf.st_size) {
break;
}
}
printf("cnt=%ld, i=%ld\n", cnt, i);
if(munmap(p, sbuf.st_size) == -1) {
perror("munmap error");
return -1;
}
close(fd);
return 0;
}