当前位置: 首页 > news >正文

IO及网络进程

一、io地位

1、地位

处于应用层和过渡层,属于应用层。

2、分类

文件管理 进程管理 网络管理 内存管理 设备管理

3、API(应用程序接口)

学习接口函数 三要素: 功能 ,参数, 返回值;

char * strcpy(char* dest ,const char *src)

4、相关知识

io:

文件 io

标准io

目录io

进程 进程间通信

网络

二、标准IO

方向: 输出 输入方向文件

#include<stdio.h> //std 标准io printf scanf getchar gets puts putchar

1、io:

input output linux 下读写文件的方式

2、流:

stream 标准io 的操作对象是描述文件信息的结构体

基本操作:

打开- 读写-关闭

二八法则

3、文件的打开open

4、错误提示

perror函数

strerror函数

5、按行读写

5、1从文件中读取一行fgets函数

5、2向文件中一行写入fputs

6、关闭文件

7、按照字节读写

char 可以理解为特殊的整数,返回值是读取出的字符对应的ascii值

7.1向文件写入一个字符fputc

7.2从文件中读取一个字符fgetc、

循环显示文件内容

8.标准文件

1、程序运行时,系统自动打开三个流。

2、标准输入 从标准输入读取数据 默认是键盘 stdin --FILE*stdin

3、标准输出 向标准输出设备输出 默认是显示器 stdout --FILE*stdout

4、标准错误输出 向标准错误输出设备输出 默认是显示器 stderr --FILE*stderr

1、文本文件:用记事本,打开之后,显示的是可见的字符,里面保存的是ascii码。

2、二进制文件: 可执行文件,如果用记事本打开,是乱码。

3、前边的函数主要是操作文本文件, 字符串的操作 这一对是操作什么都可以 ,可以操作二进制文件,是指定块大小。

9、按照指定大小读写

9.1按照指定大小读fread

9.2按照指定大小写fwrite

循环拷贝文件

10、将地址空间上数据清零

fread 读取数据 会有冗余数据

11、memset函数

12、feof

13.定位文件位置指针

14.定位文件位置指针

15.返回当前文件位置指针的位置

三、文件io

流程:打开--读写--关闭

open --read/write--close

1、打开文件

2、flag 之O_CREAT

如果文件不存在则创建并打开, 如果文件存在,则打开并不能清空

3、文件描述符的分配规则

当前尚未分配的最小的非负整数

4、标准流

标准输入 stdin --键盘0

标准输出stdout--屏幕1

标准错误输出stderr--屏幕 2

5、文件的权限

6、flag之O_EXCL

测试文件是否存在,如果O_CREAT时 问价已存在,则在open返回错误信息

7、flag之O_TRUNC

清空文件内容

8、读取

9、flag之O_RDONLY只读方式

10、flag之O_WRONLY

只写方式打开文件

11、写入

12、关闭文件

13.flag之O_APPEND

以追加的方式打开文件 ,读写会从文件末尾开始

14、文件位置指针定位

O_RDWR: 以读写方式打开文件

四、文件IO和标准IO区别

库(lib)

现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都是从0开始,因此库的存在意义非同寻常

1、理解

本质上说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行

由于windows和linux本质不同,因此二者的库的二进制是不兼容的

1)可以执行的二进制代码,可以被os载入内存执行(os是操作系统的缩写)

2)库函数 为了实现某个功能而封装起来的API集合//api 应用程序接口 scanf print

3)提供统一的编程接口,更加便于应用程序的移植

2、库的划分

静态库

动态库

一般情况下,库文件的开发者会同时提供动态库和静态库两个版本,它们都有各自的优缺点。
静态库在链接阶段,会被直接链接进最终的二进制文件中,因此最终生成的二进制文件体积会比较大,但是可以不再依赖于库文件。
动态库并不是被链接到文件中的,只是保存了依赖关系,因此最终生成的二进制文件体积较小,但是在运行阶段需要加载动态库

2.1静态库

命名规则:静态库的名字一般为libxxxx.a 其中xxxxx是该库的名称lib开头后缀名为.a

2.2动态库--共享库

命名规则:动态库的名字一般为libxxxx.so.major.minor,lib开头 后缀名为.so xxxx是该库的名
称,major是主版本号, minor是副版本号

3、动态库和静态库的区别

静态:a.out=应用程序+静态

动态:a.out=应用程序

http://www.cnnetsun.cn/news/1311906.html

相关文章:

  • Springboot集成kafka
  • 本科论文不用愁!Paperzz AI 毕业论文写作:四步搞定原创范文,图表公式全包含
  • 基于卷积神经网络-门控循环单元的时间序列预测 CNN-GRU 基于MATLAB环境 替换自己的...
  • 探秘风机螺栓预紧力的超声波检测:COMSOL 5.6仿真之旅
  • “南北合”随感
  • Vue+SpingBoot+MyBaits框架
  • 光电对抗:超构表面用于无源干扰的实践
  • AI简历分析:HR最在意的5大指标
  • 先甩个最核心的计数器代码镇楼
  • 【C++】C++类的幕后高手:友元、内部类、匿名对象与编译器优化深度解析
  • Python基于微信小程序的农产品溯源平台
  • 小白友好:Open-AutoGLM手机AI框架部署指南,10分钟跑通第一个自动化任务
  • Gemma-3-12b-it企业落地实践:中小团队低成本部署多模态AI助手方案
  • FR4 PCB透光LED反贴设计:丝印画中的隐藏式状态指示
  • ESP32-S3嵌入式HMI终端:LVGL驱动TFT+多模态感知设计
  • 支付宝周期扣款实战:从签约到代扣的全流程避坑指南(附代码示例)
  • TensorRT实战:FP16加速在边缘计算中的高效部署
  • STM32+Proteus仿真智能家居:手把手教你用虚拟串口模拟语音控制(附完整代码)
  • 构建网络安全培训系统:利用CosyVoice生成钓鱼邮件语音模拟与警示
  • Z-Image-Turbo_Sugar脸部Lora新手教程:零基础理解LoRA微调与Z-Image-Turbo底模关系
  • Mac用户必看:Chrome插件重启消失?3步永久解决同步问题(附图文)
  • 突破硬件限制:在PC上构建macOS开发环境的完整指南
  • gemma-3-12b-it惊艳效果展示:跨语言图文问答+多步推理真实案例集
  • PVE无线网络终极配置:让虚拟化主机摆脱网线束缚
  • Layuimini无限级菜单实战指南
  • ERNIE-4.5-0.3B-PT效果可视化:Chainlit中同一prompt不同温度值对比生成
  • 深入浅出GSM PDU 7bit编码:原理、实现与常见问题排查
  • Arduino结合PS2摇杆实现双舵机精准角度控制
  • 毫米波雷达拆解实录:从TI到大陆,硬件工程师带你读懂内部构造
  • Navicat for MySQL破解避坑指南:为什么你的PatchNavicat总是失败?