服务端程序
#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;
}