Linux的基础知识——mmap父子通信进程和匿名通信
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父子通信进程和匿名通信相关推荐
- Linux操作系统基础知识学习
Q1.什么是GNU?Linux与GNU有什么关系? A: 1)GNU是GNU is Not Unix的递归缩写,是自由软件基金会(Free Software Foundation,FSF)的一个项目, ...
- Linux系统基础知识
Linux系统基础知识 1.在Linux系统中,以文件方式访问设备. 2. Linux内核引导时,从文件 /etc/fstab中读取要加载的文件系统. 3. Linux文件系统中每个文件用 ino ...
- Kali Linux渗透基础知识整理(四):维持访问
Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...
- linux系统下io的过程,Linux系统基础知识:IO调度
Linux系统基础知识:IO调度 IO调度发生在Linux内核的IO调度层.这个层次是针对Linux的整体IO层次体系来说的.从read()或者write()系统调用的角度来说,Linux整体IO体系 ...
- Linux入门基础知识
注:内容系兄弟连Linux教程(百度传课:史上最牛的Linux视频教程)的学习笔记. Linux入门基础知识 1. Unix和Linux发展历史 二者就像父子关系,当然Unix是老爹.1965年,MI ...
- linux 同一进程内通信,linux中,管道能够在同一进程中进行通信吗?
linux中,管道能够在同一进程中进行通信吗? 答案是否定的. 管道是用于不同进程之间通信,不能再同一进程中进行通信. 同一进程中,直接进行参数传递就行了,不设计通信问题. 不同进程之间才需要通信,通 ...
- 权限认证php,2016年Linux认证基础知识:php做权限管理
2016年Linux认证基础知识:php做权限管理 在学习Linux认证过程中,每个人会遇到每个人不同的问题,或小或大,那么你知道在Linux下,php怎么做权限管理?下面跟yjbys小编来看看最新的 ...
- Linux常用基础知识必备三之常用指令及操作
Linux常用基础知识必备三之常用指令及操作 1.vi和vim vi如何使用 vi几种模式下的操作指令 命令模式进入编辑模式 命令模式下的快捷键 底行模式(指按了esc键之后输入按键:后出现) 字符串 ...
- Linux驱动 简单的Linux驱动基础知识
Linux驱动 简单的Linux驱动基础知识 一.简述 记--Linux驱动学习笔记. Linux驱动程序初始化硬件设备,并提供硬件控制接口给更上一层的应用调用. 例如使用QT应用程序 ...
最新文章
- 阿里巴巴为什么能抗住90秒100亿?看完这篇你就明白了!
- 一周一论文(翻译)——[VLDB 19] Minimizing Cost by Reducing Scaling Operators in Distributed Stream Processing
- ts-node 直接运行ts文件
- C# WPF发票打印
- JMeter定制功能实现
- zookeeper 密码_阿里资深JAVA架构带你深度剖析dubbo和zookeeper关系
- [转]你每天90%的注意力被浪费了
- eclipse中设置java注释模板
- 力扣-414 第三大的数
- python基本编程技巧_Python编程小白入门技巧,从入门到精通只需一个月。
- java访问kudu,KUDU的java操作
- vi编辑器编辑超大文件。
- Linux镜像下载及虚拟机中安装
- 简单的POST sql注入
- 基于 USB 传输的针式打印机驱动程序开发
- 排队论模型(一):基本概念、输入过程与服务时间的常用概率分布
- 获取html元素的高,获取HTML元素的高度jQuery
- 华为手机各代系拆机图
- 用户界面测试(来源于百度百科)
- Java——线程让步_yield()方法