#include #include #include #include #include #include #include #include #include #include #include #define MMAP_SIZE 5000 void usage() { fprintf(stdout, "usage.....\n"); fprintf(stdout, " shm_create object-file\n"); fprintf(stdout, "ex) shm_create hoge\n"); exit(0); } int main(int argc, char **argv) { int fd; int ret; char *addr; int i; char *walker; int fde, rete; 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_CREAT | O_RDWR, 0666); fde = errno; ret = ftruncate(fd, MMAP_SIZE); rete = errno; printf("fd = %d(%d), ret = %d(%d)\n", fd, fde, ret, rete ); addr = mmap(0, MMAP_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0); if (addr == MAP_FAILED) { exit(1); } walker = (char *)addr; for (i = 0; i < MMAP_SIZE/sizeof(char); i++) { *walker = 'M'; walker++; } }