服务端程序
#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <sys/mman.h>#include <string.h>#include <fcntl.h>#include <errno.h>#include <sys/types.h>int main(int argc, char **argv){ static int couter = 0; if (argc != 2) { PRintf("usage: %s file_name/n", argv[0]); return -1; } int fd = open(argv[1], O_CREAT | O_RDWR, 0744); if (fd < 0) { perror("open"); return -1; } lseek(fd, 0x1000, SEEK_SET); write(fd, "/0", 1); char *mm = (char *)mmap(NULL, 0x1000, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); if (mm == MAP_FAILED) { perror("mmap"); return -1; } close(fd); while(1) { sprintf(mm, "%d[gzhang]", couter++); // *mm = 'G'; sleep(1); } munmap(mm, 0x1000); return 0;}客户端程序#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <sys/mman.h>#include <fcntl.h>#include <sys/mman.h>#include <string.h>#include <sys/types.h>#include <errno.h>int main(int argc, char **argv){ if (argc != 2) { printf("usage: %s file_name/n", argv[0]); return -1; } int fd = open(argv[1], O_RDWR); if (fd < 0) { perror("open"); return -1; } //lseek(fd, 0x1000, SEEK_SET); //write(fd, "/0", 1); char *mm = mmap(NULL, 0x1000, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); if (!mm) { printf("mmap error/n"); return -1; } close(fd); while(1) { printf("get [%s]/n", mm); sleep(1); } munmap(mm, 0x1000); return 0;}
新闻热点
疑难解答