#include #include #include #include #include #include #include #include #include #include #include #define MMAP_SIZE 5000 void usage() { fprintf(stdout, "usage.....\n"); fprintf(stdout, " shm_read object-file\n"); fprintf(stdout, "ex) shm_read hoge\n"); exit(0); } struct hoge_s { short kind; short subid; }; typedef struct hoge_s Hoge_s; int main(int argc, char **argv) { int fd; int ret; char *addr; int i; char *walker; Hoge_s *hoge_s; char shm_object[1024]; if (argc <= 1) usage(); /* BSD = not "/" */ /* sprintf(shm_object, "/%s", argv[1]); */ sprintf(shm_object, "%s", argv[1]); fd = shm_open(shm_object, O_RDWR, 0666); addr = mmap(0, MMAP_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); if (addr == MAP_FAILED) { exit(1); } walker = (char *)addr; hoge_s = (Hoge_s *)addr; for (i = 0; i < MMAP_SIZE/sizeof(char); i++) { printf("i = %d, %c\n", i, *walker); walker++; } }