IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux 文件IO操作 -> 正文阅读

[系统运维]Linux 文件IO操作

概述

本片文章将会主要介绍四个IO函数:开关读写

open函数

  • open 函数的输入参数是 open(char* ,flag ,[mode])
  • 第一个参数表示的是打开文件的路径文件名
  • 第二个参数表示的是打开的方式,见下表
    打开方式描述
    O_RDONLY只读
    O_WRONLY只写
    O_RDWR读写
    O_CREAT创建
    O_EXCL文件不存在则创建(可以防止重复创建)
    O_TRUNC擦除文件内容再打开
    O_APPEND追加方式打开(不会清除文件内容)
  • 第三个参数表示的是文件的权限,但是注意输入权限要经过umask掩码掩盖
  • 返回值:文件创建失败返回-1,创建成功返回文件ID(文件描述符)

通过open函数来实现touch

#include "stdio.h"
#include "unistd.h"
#include "fcntl.h"
int main(int argc ,char *agrv[]){
        int fd;
        fd = open("./file_been_touched",O_CREAT|O_EXCL,0777);
        if(fd<0){
        printf("failed");
        return -1;
        }
        else{
        printf("sucess");
        return 0;
        }
}

write函数

  • write函数的输入参数有三个:写到哪里去,写什么,写多少
  • 返回值是实际上写的字节数
  • 程序示例
    char buf[]="this is kafen !";
    int fd2 = write(fd,buf,sizeof(buf));
    printf("====%d===\n",fd2);
    

read函数和lseek函数

  • 读函数有三个参数:从哪里读,读到哪里去,读多少read(fd,buf,size)

  • 当直接去读文件中的内容的时候,由于文件指针的偏移,一般情况下是读不到内容的,需要借助lseek函数

  • lseek函数有3个参数文件指针,偏移量,当前位置

  • lseek成功的返回值是文件的当前位置

    当前位置参数描述
    SEEK_SET当前为文件开头
    SEEK_CUR当前为文件指针
    SEEK_END当前为文件结尾

使用文件操作函数实现cp命令

#include "stdio.h"
#include "unistd.h"
#include "fcntl.h"
#include "string.h"

int main(int argc,char *argv[]){
        int rd_fd,wr_fd;
        char read_buf[128]={0};
        int rd_ret=0;

        if(argc<3){
        printf("please input src file and des file\n");
        return -1;
        }

        rd_fd=open(argv[1],O_RDONLY); //打开第一个输入参数文件,模式为只读
        if(rd_fd<0){
                printf("open failure");
                return -2;
        }
        printf("open success\n");

        wr_fd=open(argv[2],O_WRONLY);//打开第二个输入参数文件,模式为致只写
        if(wr_fd<0){
        printf("open failure");
        return -3;
        }
        printf("open success");

        while(1){
         rd_ret=read(rd_fd,read_buf,128); //读src文件中的内容,每次读128个
         	if(rd_ret<128){ //剩下的字符小于128个,证明是最后一次
                break;
         	}	
         write(wr_fd,read_buf,rd_ret);//把缓存中的字符拷给des文件
         
        }
        memset(read_buf,0,128);//清除缓存中的文件
        write(wr_fd,read_buf,rd_ret); //写最后的不足128个字符的数据
        close(rd_fd);//关闭src文件
        close(wr_fd);//关闭des文件
}

diff函数

  • 比较文件之间的差异
  • diff file1 file2

文件IO和标准IO

标准IO中的相关函数不仅可以读写普通文件,也还可以向标准输入输出中读或写
在这里插入图片描述

三个buffer

在这里插入图片描述

关于printf

  • printf遇到\n时会将全体缓存的内容谢翱内核中,即调用了系统调用函数
  • 库缓存写满时,会把lib buffer的内容写到kernel buf
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-03-22 21:01:04  更:2022-03-22 21:03:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:29:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码