1.mmap父子进程通信

\qquad父子等有血缘关系的进程之间也可以通过mmap建立的映射区来完成数据通信。但相应的要在创建映射区时候指定对应的标志位参数flags:
\qquadMAP_PRIVATE:父子进程各自独占映射区;MAP_SHARED:父子进程共享映射区。

2.mmap匿名通信

\qquad所谓mmap匿名通信就是不借助中间文件创建mmap映射区。

3.举例

#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<stdlib.h>
#include<errno.h>
#include<string.h>
#include<sys/mman.h>
#include<unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main()
{//1.创建父子共享映射区int* p;p = mmap(NULL,100,PROT_READ|PROT_WRITE,MAP_SHARED|MAP_ANON,-1,0);if(p==MAP_FAILED){perror("mmap fail!");exit(1);}//2.创建子进程int fork_fd;fork_fd = fork();if(fork_fd==-1){perror("fork fail!");exit(1);}else if(fork_fd==0){printf("子进程已经被创建!\n");*p = 1000;printf("i am child,*p=%d\n",*p);}else if(fork_fd>0){sleep(2);int wait_fd;wait_fd = wait(NULL);if(wait_fd==-1){perror("wait fail!");exit(1);}printf("父进程已经被创建!\n");printf("i am parent,*p=%d\n",*p);}//3.关闭映射区int close_fd;close_fd = munmap(p,100);if(close_fd==-1){perror("munmap fail!");exit(1);}return 0;
}

Linux的基础知识——mmap父子通信进程和匿名通信相关推荐

  1. Linux操作系统基础知识学习

    Q1.什么是GNU?Linux与GNU有什么关系? A: 1)GNU是GNU is Not Unix的递归缩写,是自由软件基金会(Free Software Foundation,FSF)的一个项目, ...

  2. Linux系统基础知识

    Linux系统基础知识 1.在Linux系统中,以文件方式访问设备.   2. Linux内核引导时,从文件 /etc/fstab中读取要加载的文件系统. 3. Linux文件系统中每个文件用 ino ...

  3. Kali Linux渗透基础知识整理(四):维持访问

    Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...

  4. linux系统下io的过程,Linux系统基础知识:IO调度

    Linux系统基础知识:IO调度 IO调度发生在Linux内核的IO调度层.这个层次是针对Linux的整体IO层次体系来说的.从read()或者write()系统调用的角度来说,Linux整体IO体系 ...

  5. Linux入门基础知识

    注:内容系兄弟连Linux教程(百度传课:史上最牛的Linux视频教程)的学习笔记. Linux入门基础知识 1. Unix和Linux发展历史 二者就像父子关系,当然Unix是老爹.1965年,MI ...

  6. linux 同一进程内通信,linux中,管道能够在同一进程中进行通信吗?

    linux中,管道能够在同一进程中进行通信吗? 答案是否定的. 管道是用于不同进程之间通信,不能再同一进程中进行通信. 同一进程中,直接进行参数传递就行了,不设计通信问题. 不同进程之间才需要通信,通 ...

  7. 权限认证php,2016年Linux认证基础知识:php做权限管理

    2016年Linux认证基础知识:php做权限管理 在学习Linux认证过程中,每个人会遇到每个人不同的问题,或小或大,那么你知道在Linux下,php怎么做权限管理?下面跟yjbys小编来看看最新的 ...

  8. Linux常用基础知识必备三之常用指令及操作

    Linux常用基础知识必备三之常用指令及操作 1.vi和vim vi如何使用 vi几种模式下的操作指令 命令模式进入编辑模式 命令模式下的快捷键 底行模式(指按了esc键之后输入按键:后出现) 字符串 ...

  9. Linux驱动 简单的Linux驱动基础知识

    Linux驱动 简单的Linux驱动基础知识 一.简述         记--Linux驱动学习笔记. Linux驱动程序初始化硬件设备,并提供硬件控制接口给更上一层的应用调用. 例如使用QT应用程序 ...

最新文章

  1. 阿里巴巴为什么能抗住90秒100亿?看完这篇你就明白了!
  2. 一周一论文(翻译)——[VLDB 19] Minimizing Cost by Reducing Scaling Operators in Distributed Stream Processing
  3. ts-node 直接运行ts文件
  4. C# WPF发票打印
  5. JMeter定制功能实现
  6. zookeeper 密码_阿里资深JAVA架构带你深度剖析dubbo和zookeeper关系
  7. [转]你每天90%的注意力被浪费了
  8. eclipse中设置java注释模板
  9. 力扣-414 第三大的数
  10. python基本编程技巧_Python编程小白入门技巧,从入门到精通只需一个月。
  11. java访问kudu,KUDU的java操作
  12. vi编辑器编辑超大文件。
  13. Linux镜像下载及虚拟机中安装
  14. 简单的POST sql注入
  15. 基于 USB 传输的针式打印机驱动程序开发
  16. 排队论模型(一):基本概念、输入过程与服务时间的常用概率分布
  17. 获取html元素的高,获取HTML元素的高度jQuery
  18. 华为手机各代系拆机图
  19. 用户界面测试(来源于百度百科)
  20. Java——线程让步_yield()方法

热门文章

  1. LeetCode 1374. 生成每种字符都是奇数个的字符串
  2. python源文件编码的含义_【原创】Python 源文件编码解读
  3. 评论数据获取、词频统计、词云图
  4. 使用Python requests post上传图片及示例demo
  5. 获取数据 - 下载附件解压附件 - Python代码
  6. NAACL’21 | 来看如何让模型学会因为所以但是如果
  7. 全栈深度学习第1期:如何启动一个机器学习项目?
  8. 听说读论文也有trick?这篇文章告诉你深度学习论文阅读最佳姿势
  9. 剖析 Promise 之基础篇
  10. 使用docker部署flask项目