Linux 基础IO(Input与output)学习

进程间通信:讲的是操作系统为用户提供的几种进程间的通信方式

概念:进程间通信其实就是多个进程之间进行数据交互

问题:进程间通信为什么不能直接进行数据交互,需要使用系统提供的方式?

原因:进程之间是具有独立性的,每个进程都有自己的虚拟地址空间,访问数据的时候都是通过自己的虚拟地址进行访问的,一个进程将自己的某个变量的空间地址(虚拟地址)交给另一个进程,另一个进程是无法访问的(例如,把两个人放在两个真空空间,这时候两个人说话对方听不到,无法形成实质性通信)

操作系统提供进程间通信方式,实际上就是给多个进程之间提供一个空间的交叉点,让多个进程都可访问到,形成通信

1.管道

生活资源一般也都是管道传输:自来水管道等

管道的特性:半双工通信

管道的本质:操作系统给进程之间提供进程间通信的方式,本质其实都是提供了一个空间的交叉点,都能访问,在我们程序中,管道其实是内核中的一块缓冲区(就是一块内存,多个进程通过访问同一块缓冲区来实现数据传输)

管道分类

管道本质是内核中的一块缓冲区,但是Linux操作系统中,一切皆文件,将管道当作文件处理

匿名管道没有标识符,无法被其他进程找到,所以无法进行通信,这时候只能通过创建子进程的方式进行,子进程复制了父进程,也就复制了父进程所拥有的操作语柄,通过语柄可以访问到这个管道

2.文件的操作

以文本的形式打开文件,可能会造成读到的文数据与文件实际的数据有差别

因此,要对文件的实际数据进行处理,则一定要使用b来打开,如下:

3.接口介绍

库函数是对系统调用接口的封装

接口:open write read lseek close

open

write

read

lseek

close

因为系统调用接口功能比较单一,在某些特定场景下比较麻烦,所以,库函数是对系统调用接口的封装,printf将数据写入显示器文件,不单单是写入,还包含数据的格式化

4.文件流与文件描述符

向文件写入数据,数据不会立即被写入文件,而是先写入缓冲区,等待缓冲区刷新的时候写入文件,但对于系统调用接口来说本质上没有这个缓冲区,因此write向显示器写入数据是直接打印的,而printf,fprintf, fwrite是刷新缓冲区时才打印

文件描述符:被打开的文件的操作语柄--一个非负整数

5.重定向

6.动态库和静态库

静态库与动态库

静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库

动态库(.so):程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。

一个与动态库链接的可执行文件仅仅包含它用到的函数入口地址的一个表,而不是外部函数所在目标文件的整个机器码

在可执行文件开始运行以前,外部函数的机器码由操作系统从磁盘上的该动态库中复制到内存中,这个过程称为动态链接(dynamic linking)

动态库可以在多个程序间共享,所以动态链接使得可执行文件更小,节省了磁盘空间。操作系统采用虚拟内存机制允许物理内存中的一份动态库被要用到该库的所有进程共用,节省了内存和磁盘空间

生成库

使用库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/7952.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电动力学问题中的Matlab可视化

电磁场的经典描述 小说一则 电磁场的经典描述就是没有啥玩意量子力学的经典电动力学下对电磁场的描述,以后有空写个科幻小说,写啥呢,就写有天张三遇见了一个外星人,外星人来自这样一个星球,星球上的物质密度特别低,导致外星人的测量会明显的影响物质的运动,外星人不能同时得到…

JNI 调用

简介 JNI是Java Native Interface的缩写,通过使用 Java本地接口书写程序,可以确保代码在不同的平台上方便移植。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。 本地代码与 Java 虚拟机…

【ChatGPT】ChatGPT-5 强到什么地步?

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 目录 ChatGPT-5 强到什么地步? 技术 深度学习模型的升级 更好的预测能力 自适应学习能力 特点 语言理解能力更强 自我修正和优化 更广泛的应用领域 应用 对话系统 智能写作…

【机器学习】吴恩达机器学习Deeplearning.ai

机器学习已经强大到可以独立成为人工智能的一个子领域。 可以通过对机器编程实现比如执行网络搜索、理解人类语言、通过x光诊断疾病,或制造自动驾驶汽车。 机器学习定义 一般来说,给一个算法学习的机会越多,它的表现就越好。 机器学习的两种…

阿里云5、6代云服务器实例免费升级至第7代(不限次数)

简介: 阿里云推出云服务器实例免费升级至第7代优惠活动,第5、6代云服务器,可享受实例部分免费升级至第7代实例,让你的云服务器拥有更高的安全、存储、网络等性能。 阿里云服务器升级有优惠吗?当然是有的&am…

长安信托:拥抱数字信托,探索多项目管理新路径

长安信托:公司使用 ONES 已经 2 年了。ONES 最大的优势是能够有效串联我司信息科技研发过程中的各个环节,从需求管理到研发任务跟踪,再到测试管理,ONES 能明确地展示出业务部门从需求提出到研发上线的全链路,体现信息科…

免费ChatGPT接入-国内怎么玩chatGPT

免费ChatGPT中文版 OpenAI 的 GPT 模型目前并不提供中文版的免费使用,但是有许多机器学习平台和第三方服务提供商也提供了基于 GPT 技术的中文版模型和 API。下面是一些常见的免费中文版 ChatGPT: Hugging Face:Hugging Face 是一个开源社区…

后缀为whl的文件是什么?如何安装whl文件?学习一下(22)

小朋友们好,大朋友们好! 我是猫妹,一名爱上Python编程的小学生。 欢迎和猫妹一起,趣味学Python。 今日主题 了解并使用Pyhton的库安装包文件whl。 什么是whl文件 whl格式本质上是一个压缩包,里面包含了py文件&am…

chatGPA的主要功能-chatGPT深度分析

ChatGPT功能介绍 ChatGPT是基于深度学习技术的自然语言处理算法,其主要用途是生成自然语言文本,能够应用于多个自然语言处理任务。以下是其主要功能介绍: 文本生成:ChatGPT能够生成高质量的自然语言文本,可以应用于大…

linux常用系统管理经验谈

Lab1 硬件和安装 步骤一:准备计算机 任务: 使用Red Hat Linux光盘启动系统 在启动时进入BIOS界面 设置系统启动顺序为A,CDROM,C 修改其他任何推荐的设置 保存并退出BIOS设置 步骤二:使用Anaconda(图形模式…

二十分钟带你了解JVM性能调优与实战进阶

ZGC 诞生原因 Java生态非常强大,但还不够,有些场景仍处于劣势,而ZGC的出现可以让Java语言抢占其他语言的某些特定领域市场。比如 谷歌主导的Android手机系统显示卡顿。证券交易市场,实时性要求非常高,目前主要是C主…

阿里云版GPT官宣,我们问了它10个问题

4月7日,阿里云宣布自研大模型“通义千问”,目前已开始邀请用户测试体验。 阿里达摩院在NLP自然语言处理等前沿科研领域早已布局多年,并于2019年启动大模型研发,通义千问便是其最新成果,相当于阿里云版的“ChatGPT”。 …

EPICS synApps SSCAN模块

1、在这个模块中有什么? 1)代码 sscan记录busy记录recDynLink库saveData数据存储客户端scanparm记录 2)EPICS数据库 scan数据库scanParms和alignParms数据库 3)MEDM显示窗口 scan*.adlscan*_help.adl2、简单扫描 1&#xff0…

Linux系统【Centos7】设置防火墙教程

1. 查看防火墙状态 在终端输入以下命令: systemctl status firewalld 如果状态显示为“active”说明防火墙已经启动;如果状态显示为“inactive”说明防火墙没有启动。 2. 启动防火墙 在终端输入以下命令: systemctl start firewalld 3…

vue3自定义实现可过滤关键字的树形下拉选择框

背景 最近项目中有一个部门选择需求,一开始是用element-plus的级联下拉写的,但是由于层级过深,会出现级联下拉超出屏幕的情况,所以改用树形下拉,但是element没有相关组件,现记录下vue3js自定义实现可以根据…

Vector - CAPL - CRC算法介绍(续)

不常用CRC算法 目录 Crc_CalculateCRC8H2F 代码示例 Crc_CalculateCRC32P4 代码示例 Crc_CalculateCRC64 代码示例 Crc_CalculateCRC8H2F 功能:根据数据计算CRC8H2F的相应校验和。 data:待计算CRC8H2F校验和的数据 dataSize:待计算CRC…

JVM垃圾收集器与HotSpot的算法细节

目录 HotSpot的算法细节实现 根节点枚举 安全点 安全区域 记忆集与卡表 记忆集 作用 卡表(Card Table) 卡页(Card Page) 元素变脏(Dirty) 写屏障 写屏障 写前屏障(Pre-Write Barrie…

【数据结构】顺序表

作者:日出等日落 专栏:数据结构 只有毅力才会使我们成功,而毅力的来源又在于毫不动摇,坚决采取为达到成功所需要的手段。 …

Ceph部署

1. 简介 Ceph是一个高性能、可扩容的分布式存储系统,它提供三大功能: 对象存储:提供RESTful接口,也提供多种编程语言绑定。兼容S3、Swift块存储:由RBD提供,可以直接作为磁盘挂载,内置了容灾机…

代码规范(以后会补充)

目录 为什么要规范代码 不规范的代码有什么特点 ​编辑 不规范的坏处 规范代码是什么样的 如何规范代码 1.代码中不要出现莫名其妙的数字 2.深度嵌套 3.注释 4.避免创建大函数 5.重复代码 6.变量命名 7.函数命名 8.命名时注意动词的使用 9. 常量值所有都大写 10. 避免变…
最新文章