annotate c/mmap/main.cc @ 28:178cf2dfc45b

add make test
author Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
date Sun, 11 May 2014 18:14:02 +0900
parents 0f4ccdbaf57f
children b9d005c23aaa
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 #include <stdio.h>
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 #include <stdlib.h>
28
178cf2dfc45b add make test
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
3 #include <string.h>
3
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 #include <unistd.h>
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 #include <fcntl.h>
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 #include <sys/stat.h>
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 #include <sys/types.h>
28
178cf2dfc45b add make test
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
8 #include <sys/mman.h>
3
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10
28
178cf2dfc45b add make test
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
11 const char *usr_help_str = "Usage : ./mmap [-file filename]";
3
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 int main(int argc, char *argv[]){
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 struct stat sb;
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 char *filename = 0;
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 for (int i = 1; argv[i]; ++i) {
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 if (strcmp(argv[i], "-file") == 0){
28
178cf2dfc45b add make test
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
20 filename = argv[i+1]; i++;
3
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 }
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 }
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 if (filename == 0){
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 puts(usr_help_str);
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 exit(1);
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 }
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 int fd = -1;
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 if ((fd=open(filename,O_RDONLY,0666))==0){
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 fprintf(stderr,"can't open %s\n",filename);
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 }
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 if (fstat(fd,&sb)){
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 fprintf(stderr,"can't open %s\n",filename);
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 }
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37
28
178cf2dfc45b add make test
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
38 int text_size = sb.st_size;
178cf2dfc45b add make test
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
39 char *text = (char *)mmap(0, text_size, PROT_READ, MAP_PRIVATE, fd, 0);
3
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40
28
178cf2dfc45b add make test
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
41 printf("%s\n",text);
3
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42
28
178cf2dfc45b add make test
Masataka Kohagura <kohagura@cr.ie.u-ryukyu.ac.jp>
parents: 26
diff changeset
43 munmap(text, text_size);
3
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 close(fd);
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 return 0;
cd6ac4ce5c3c add some files
Masataka Kohagura <e085726@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 }