首页 > 其他分享 >mmap基本用法

mmap基本用法

时间:2023-06-15 11:56:16浏览次数:35  
标签:基本 return int mmap 用法 inum include ptr

 

 

示例:

#include <sys/mman.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
 
int main(int argc,char **argv)
{
    int ret, inum = 0;
#if 0    // 该段用匿名映射区代替
    int fd = open("mytest.txt", O_CREAT|O_RDWR, 0644);
    
    if(fd < 0)
    {
    perror("open feild!");
    return -1;
    }
    
    ret = ftruncate(fd, 4);
    if(ret == -1)
    {
    perror("ftruncate feild!");
    return -1;
    }
    char *ptr = mmap(NULL, 4, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
    if(ptr == MAP_FAILED)
    {
    perror("mmap feild!");
    return -1;
    }
    close(fd);
#else
    char *ptr = mmap(NULL, 4, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, -1, 0);
    if(ptr == MAP_FAILED)
    {
    perror("mmap feild!");
    return -1;
    }
#endif
    *(int *)ptr = 1234;
    printf("ptr : %d, inum : %d\n", *(int *)ptr, inum);
    
    pid_t pid = fork();
    if(pid == 0)    // son 
    {
    *(int *)ptr = 5678;
    inum = 6666;
    printf("ptr : %d, inum : %d\n", *(int *)ptr, inum);
    }
 
    if(pid > 0)    // father
    {
    wait(NULL);    
    printf("ptr : %d, inum : %d\n", *(int *)ptr, inum);
 
    ret = munmap(ptr, 4);
    if(ret == -1)
    {
        perror("munmap feild!");
        return -1;
    }
    }
 
    return 0;
}

 

标签:基本,return,int,mmap,用法,inum,include,ptr
From: https://www.cnblogs.com/yinguojin/p/17482495.html

相关文章

  • MarkDown学习(基本语法)
    MarkDown学习(基本语法)Typora前提:先在视图中打开大纲,更便于后续查看标题一级标题:#+空格+标题名字(或者内容后面快捷键ctrl+1)二级标题:##+空格+标题名字(或者内容后面快捷键ctrl+2)三级标题:......最多只到六级标题字体粗体:字体两边加**(选中内容后ctrl+b)HelloWorld!斜体:字体......
  • const_cast用法
    顶层const&底层const:普通变量没有底层顶层的区别;intconsta==constinta只有对应指针,引用才会有区别:指针常量->顶层const,指针本身不可被修改。int*constb=&a,a既可以通过a=x来改变,也可以通过*b=x来改变,但不可以把b指向别的地址、别的变量。例如声明intc=2;b=c......
  • python第一课 -python基本语法
    python关键字导入关键字,并打印出来importkeyword#查看python关键字print(keyword.kwlist)'''将python关键字每行5个打印出来'''key=keyword.kwlistj=0foriinkey:print(i,end='\t')j+=1ifj==5:j=0print('\......
  • C++ const_cast用法
    原文C++const_cast用法const_cast是一种C++运算符,主要是用来去除复合类型中const和volatile属性(没有真正去除)。变量本身的const属性是不能去除的,要想修改变量的值,一般是去除指针(或引用)的const属性,再进行间接修改。用法:const_cast<type>(expression)通过const_cast运算符,也只......
  • 最快最好用的数据增强库「albumentations」 一文看懂用法
    本文内容如下1.Albumentations的自我介绍2.案例欣赏3.如何安装4.有哪些数据增强方法4.1像素级变换(Pixel-leveltransforms)4.2空间级变换(Spatial-leveltransforms)5.看完就会的使用方法5.1Compose5.2Oneof5.3我们再随便看看其他的一些方法。5.4怎么把这些增强方法和pytorch......
  • MONAI(4)—一文看懂各种Transform用法(下)
    6裁剪&填充【SpatialCropd,CenterSpatialCropd,CropForegroundd,RandCropByPosNegLabeld,SpatialPadd】对于CT或者MRI图像来讲,图像是非常大的,又是一个三维图像,不可能全部输入网络中训练。要么把图像直接Resize到固定的尺寸,要么就是裁剪图像。monai提供了非常多的裁剪模式,包括......
  • MONAI(3)—一文看懂各种Transform用法(上)
    在上一次分享中,我们在Dataset方法里,已经使用了transform函数,这节课对transform做一个详细的介绍。上一次视频连接:MONAI中,一定要学会的三种Datasettransform大致可以分为以下几个类别想要什么样类别的变换,就在该类别下去找。目录普通变换和字典变换的联系与区别1.数据准备2.加载NIf......
  • 机器学习中的基本问题——log损失与交叉熵的等价性
    1、log损失log损失的基本形式为:log(1+exp(−m))log(1+ex......
  • python基础知识——基本语法
    在python基础知识这个系列中,准备罗列出我学习python的一些基础知识,包括:基本语法控制语句内置数据结构模块和函数字符串文件处理面向对象异常处理以前写机器学习算法喜欢使用Matlab语言,接触python后,觉得python有很多地方还是比Matlab方便点,各有各的优势吧,在公司还是......
  • 图解机器学习总结——1、基本概念
    序言:近期主要帮同事讲解《图解机器学习》,刚拿到这本书觉得内容相比较平常使用的机器学习算法,很多地方讲解得比较奇怪,在认真的读完后,觉得还是有很多重要的东西,因此读了书就想把知识点整理出来,加上一些自己对各种算法的认识,因此这个系列里面有一些个人的理解,若有不对的地方,还请不吝指......