实例一:
代码如下:
#include
#include
#include
#include
#include
#include
#include
int main(void)
{
int fd, ret, fsize;
char *ptr;
struct stat buf;
fd = open("/etc/passwd", O_RDONLY);
if (fd == -1) {
perror("open");
exit(1);
}
fstat(fd, &buf);
fsize = buf.st_size;
ptr = mmap(NULL, fsize+1, PROT_READ | PROT_WRITE,
MAP_PRIVATE, fd, 0);
if (((void *)(-1)) == ptr) {
perror("mmap");
close(fd);
exit(1);
}
ptr[fsize] = '\0';
printf("%s", ptr);
munmap(ptr, fsize);
close(fd);
exit(0);
}
实例二
代码如下:
#include
#include
#include
#include
#include
#include
#include
#include
int main(void)
{
char *ptr;
pid_t pid;
ptr = (char *)mmap(NULL, 32, PROT_READ |
PROT_WRITE, MAP_PRIVATE |
MAP_SHARED, -1, 0);
if (((void *)(-1)) == ptr) {
perror("mmap");
exit(1);
}
pid = fork();
if (pid == -1) {
perror("fork");
munmap(ptr, 32);
exit(1);
}
if (pid == 0) {
strcpy(ptr, "Hello world!");
munmap(ptr, 32);
exit(0);
}
wait(NULL);
printf("%s\n", ptr);
munmap(ptr, 32);
exit(0);
}
阅读(518) | 评论(0) | 转发(0) |