图控大叔

构图传递思想

阅读从未如此简单!!!

01

前言

在Linux环境下对于IO编程的学习,小编在之前的推文中已经发布过一篇关于系统IO与标准IO的异同点的文章,对系统IO与标准IO做了初略的描述及比较。接下来,小编将按内容来发布关于系统IO与标准IO的函数使用,本次推文的内容为关于系统IO相关函数的说明及其使用。

02

预热

虽然本篇推文的内容是讲解系统IO相关函数的使用,但是对于系统IO的一些知识点,小编觉得还是有必要给大家预热一番。

系统IO

别称:文件IO、低级IO

系统IO称之为不带缓存的I/O(unbuffered I/O)。不带缓存指的是每个read,write都调用内核中的一个系统调用。也就是一般所说的低级I/O ——操作系统提供的基本I/O服务,与os绑定,特定于linix或unix平台。

系统I/O读写文件时,每次操作都会执行相关系统调用。

好处:直接读写实际文件

坏处:频繁的系统调用会增加系统开销

系统I/O中用文件描述符表现一个打开的文件,可以访问不同类型的文件如普通文件、设备文件和管道文件等。

系统IO:无缓冲输出, 一般用于操作设备文件(实时刷新)

03

具体函数

打开:open

需包含头文件:

#include

#include

#include

函数功能:

打开或创建一个普通文件

函数原型:

形参作用:

1、pathname :要打开或创建的文件路径

2、flags :打开文件后对这个文件的操作权限

3、mode  :是和O_CREAT参数结合一起使用,创建后给它设置用户对文件的操作权限。

(注意:设置的mode不一定会成功,因为操作系统对文件会有保护作用,比如说你的文件不存在与Linux环境下的,而是通过共享文件的形式进行操作的,那么就有这个不成功的可能)

返回值:

打开失败或创建失败:返回 -1

打开成功或创建成功:返回:大于等于0整数,这个整数称之为:文件描述符。

写入:write

需包含头文件:

#include

函数功能:

根据文件描述符对文件进行写操作

函数原型:

形参:

1、fd :要操作的文件描述符

2、buf:  要写入文件数据的地址

3、count:要写文件数据字节数

返回值:

1、写入成功:返回写入文件数据的字节数

2、返回0表示没有写入数据

3、写入失败:返回-1

关闭:close

需包含头文件:

#include

函数功能:

关闭文件

函数原型:

int close(int fd);

形参作用:

fd ---->文件描述符

返回值:

成功:0

失败:-1

读取:read

需包含头文件:

#include

函数功能:

根据文件描述符读取一个文件的数据

函数原型

形参:

1、fd -->文件描述符

2、buf -->内存地址,存储从文件里面读取出来数据

3、count --->每次要求读取的字节数

返回值:

等于-1:读取出错,可能为文件不存在或者路径出错等原因

大于0:表示成功读取的字节数

等于0:文件数据已读完

情况说明《

1、文件存在但是无数据。

2、文件有数据,但是在上一次读取时已经读取完毕。例如,距文件末尾还有50个字节而请求读100个字节,则read返回50,也就是说此时该文件的位置指针已经到了文件末尾。但此时文件尚未关闭,你进行了第二次读取的时候,read返回值就为0。

偏移文件位置指针:lseek

需包含头文件:

#include

#include

函数功能:

偏移文件位置指针,因为每次重新打开文件,文件位置指针默认指向开头位置,且不管是读还是写操作都会改变文件位置指针的位置

函数原型:

形参:

1、fd --->文件描述符

2、offset --->偏移量(字节数),往后偏移写正数,往前偏移写负数

3、whence --->偏移的参考点

SEEK_SET           文件开头

SEEK_CUR   文件位置指针当前位置

SEEK_END          文件末尾

返回值:

成功:返回从文件开头到文件位置指针的字节数

失败:-1

习题部分

1、往一个1.txt文件里面写入数据"hello wrold",若1.txt不存在则新建。

#include 

2、读取一个2.txt文件里面的数据

#include 

3、把1.txt文件里面的数据拷贝到2.txt里面

#include 

4、实现大型文件的复制,且该文件大小未知,以飞秋安装包为例。

#include 

5、直接读取3.txt文件里面的"hello world good" 中的  "good"

#include 

6、直接往4.txt文件里面的"hello world" 中间插入  "good"

#include 

04

结尾

好了,本次推文到此就要和大家说再见了,如果大家对于学习、生活中有哪些技巧、知识点需要分享的,或者是对于本次推文的内容、背景、排版等内容有什么好的想法,可以在后台给小编留言哦!祝大家学习进步!!!

bzero函数_Linux(基础) | 系统IO函数的使用相关推荐

  1. 标准C库IO函数和Linux系统IO函数对比

    标准C库IO函数和Linux系统IO函数对比 man 3 fopen #查看函数详情 虚拟地址通过mmu映射到真是的地址空间

  2. linux PCB数组,Linux中的系统IO函数

    一.整体大纲 二. 系统IO函数 1. 一些概念 文件描述符 PCB C库函的IO缓冲区 1) 文件描述符 int 类型 一个进程最多可打开多少文件 2) pcb 进程控制块 在其中有一个文件描述符表 ...

  3. Linux部分系统IO函数

    1.系统IO函数: (1)open函数: 1).首先其需要包含头文件: #include<sys/types.h> #include<sys/stat.h> #include& ...

  4. 【Linux系统编程学习】C库IO函数与系统IO函数的关系

    此为黑马Linux课程笔记. 1. C标准IO函数工作流程 如图,以C库函数的fopen为例,其返回类型是FILE类型的指针,FILE类型包含很多内容,主要包含三个内容:文件描述符.文件读写指针的位置 ...

  5. Linux C/C++编程之(十三)系统IO函数

    文章目录 一.概述 二.当头棒喝 三.函数概述 四.IO函数介绍 1)open 2)close 3)read 4)write 5)lseek 6)fcntl 五.利用IO函数实现一个copy函数 一. ...

  6. 【Linux系统IO函数】lseek函数

    Linux系统IO函数-lseek函数 1.1 lseek函数与标准C库的fseek函数 lseek函数对应标准C库中的fseek函数 查看标准C库中的fseek函数使用说明: (shell输入) m ...

  7. 文件函数python_Python 基础之文件 函数

    今天回顾一下之前学的文件操作相关知识点,对于文件的操作,主要有一下几部分构成: 一.文件的基础知识 1.文件操作的基本流程 文件操作其实可以分成三大部分: 1.打开文件,获取文件句柄并赋予一个变量 2 ...

  8. dumpbin发现没有入口函数_JavaScript基础之入口函数-2020版

    JavaScript基础之入口函数-2020版 1.入口函数 window.onload = function(){ 内部放js} 这个函数的意思就是说,当我们页面加载完毕之后(就是说等页面的结构 样 ...

  9. python常用数值处理函数_SciPy基础数据操作函数

    2. SciPy基础 SciPy以NumPy为基础,与NumPy一样,SciPy有着稳定,成熟,且应用广泛的数值运算库.方便.易于使用.专为科学和工程设计的python工具包,它包括了统计.优化.整合 ...

  10. java el 函数_javaweb基础(30)_EL函数库

    1 2 3 4 5 6 7 8 EL函数库中的方法使用范例 9 10 11 12 fn:toLowerCase函数使用范例: 13 14 它接收一个字符串类型的参数.fn:toLowerCase(&q ...

最新文章

  1. mysql激活指令_MySQL命令大全
  2. Date String转换
  3. 日常运维管理技巧十七(Nethogs进程流量监控工具)(转载)
  4. NTP时间服务器搭建
  5. CentOS 7.0服务器安装配置LAMP服务器
  6. 第三次学JAVA再学不好就吃翔(part109)--LineNumberReader类
  7. 自学笔记:计时器Chronometer
  8. 继承演练 动物 狗 哮天犬 c# 1613703354
  9. WebSocket简单使用(二) - 客户端
  10. 在linux中建立一个vim的目录,Linux学习笔记一(目录结构、Vim编辑器、用户管理)...
  11. UGUI的InputField
  12. 【解决办法】adobe audition打不开 显示MSVCR71.dll丢失
  13. 事事有着落,件件有回音——MyAppsp平台督查督办管理系统
  14. YOLOv5改进之十三:主干网络C3替换为轻量化网络EfficientNetv2
  15. NX二次开发 使用了一个已删除或无效的类号
  16. MeteoInfoLab脚本示例:获取气团轨迹每个节点的气象数据
  17. 手机Vbus上防护用OVP简介
  18. 2023ACP世界大赛-AI时代下,艺术教育者论坛
  19. 07年中国企业500强名单
  20. ubuntu 修改开机启动项默认值

热门文章

  1. currentTarget与target的区别
  2. tomcat优化实例
  3. angular-route 和soket注意细节点
  4. [leetcode]Insert Interval
  5. 10 步让你成为更优秀的Coder
  6. centos安装python3、redis和虚拟环境
  7. poj 3264 Balanced Lineup RMQ问题
  8. swwht(canvas).demo
  9. [HAOI2006] 聪明的猴子
  10. 【blog】用emoji-java解决Emoji存储MySQL乱码问题