Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux文件IO操作篇 (一) 非缓冲文件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_618_2@

概述

文件IO操作分为 2 种 非缓冲文件IO 和 缓冲文件IO 它们的接口区别是 非缓冲 open() close() read() write() 缓冲 fopen() fclose() fread() fwrite()   1. 非缓冲文件操作 //规模较小 实时性高 的文件 // 例如串口等高速实时通信 // 0 标准输入,通过终端输入 // 1 标准输出,通过终端输出 // 2 标
@H_618_2@
@H_618_2@ @H_618_2@
@H_618_2@

文件IO操作分为 2 种 非缓冲文件IO 和 缓冲文件IO

它们的接口区别是

非缓冲   open() close() read() write()
缓冲    fopen() fclose() fread() fwrite()
@H_618_2@

 

1. 非缓冲文件操作

//规模较小 实时性高 的文件 // 例如串口等高速实时通信 // 0 标准输入,通过终端输入 // 1 标准输出,通过终端输出 // 2 标准错误,系统中存放错误的堆栈
@H_618_2@
//非缓冲文件操作函数只有2个
#include <sys/types.h> #include <sys/uio.h> #include <unistd.h> ssize_t read(int fildes,void *buf,size_t nbytE); ssize_t write(int fildes,const void *buf,size_t nbytE);
@H_618_2@

 

1.1 read()

//read()用于从文件中将信息读取到指定的内存区域,
//read(文件表示符,内存块指针,内存块大小)文件标识符由open获得。
@H_618_2@
#include <stdio.h>
#include <String.h>

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/uio.h>
#include <unistd.h>


#define LENGTH 1024

int main(int argc,char const *argv[])
{
    char buf[LENGTH] = {@H_489_142@0};
    int fd;
    int len;
    
    fd = open("./read.c",O_RDONLY);    
    if(fd < @H_489_142@0){
        puts("file open fail .");
        return -@H_489_142@1;
    }
    puts("open success .");

    len = read(fd,buf,LENGTH);
    if(len != -@H_489_142@1){
        puts("read ok");
        if(len == @H_489_142@0 ){
            puts("read no.");
        }else{
            printf("%s\n",buf);}
    }
    close(fd);

    return @H_489_142@0;
}
@H_618_2@

 

1.2 write()

//write()用于将缓存内容写入到文件中。
//ssize_t write(int fildes,const void *buf,size_t nbytE); fildes由open获得
@H_618_2@

例子:从键盘输入一个字符串,再将该字符串保存到文件中。

#include <stdio.h>
#include <String.h>
#include <unistd.h>


#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#define LENGTH 10240

int main(int argc,char const *argv[])
{
    int fd;
    int ret;
    char buf[LENGTH] = {@H_489_142@0};
    puts("请输入要保存的信息:");

    if((ret = read(@H_489_142@0,LENGTH)) < @H_489_142@0)    //从非缓冲标准输入0(键盘)获取数据,read到buf中,
    {
        perror("读取失败");
        return -@H_489_142@1;
    }


    fd = open("./copy1",O_WRONLY|O_CREAT,@H_489_142@0775); //以创造的方式打开copy1文件
    if(fd < @H_489_142@0)
    {
        puts("file open faile");
        return -@H_489_142@1;
    }

    if((ret = write(fd,ret)) < @H_489_142@0)    //将buf中的内容写到文件中。
    {
        puts("写入失败");
        return -@H_489_142@1;
    }
    close(fd);    //最后关闭文件id。

    return @H_489_142@0;
}
@H_618_2@ @H_618_2@
@H_618_2@
@H_618_2@@H_618_2@

大佬总结

以上是大佬教程为你收集整理的linux文件IO操作篇 (一) 非缓冲文件全部内容,希望文章能够帮你解决linux文件IO操作篇 (一) 非缓冲文件所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。