IO学习系列之使用read和write复制文件内容

news/2024/7/24 13:20:31 标签: 学习, 算法, 青少年编程, Linux, 文件IO
  • read函数:
  • 功能:从文件fd中读取count个字节,存放进指针buf
  • 具体内容:
#include <unistd.h>

ssize_t read(int fd, void *buf, size_t count);
/*
参数:

    	fd:	文件描述符
    	
    	buf:	用来存储读取内从的缓冲区的首地址
    	
    	count:	想要读取的字节数
    	
返回值:

    	成功  	实际读取的字节数,且读到文件结尾会返回0
    	
    	失败  	-1  	重置错误码
*/
  • write函数:
  • 功能:把指针buf中的内容,写count个字节文件fd中;
  • 具体内容:
#include <unistd.h>

ssize_t write(int fd, const void *buf, size_t count);
/*
参数:

    	fd:	文件描述符
    	
    	buf:	要写入的数据的首地址
    	
    	count:	想要写入的字节数
    	
返回值:

    	成功  	实际写入的字节数 (如果返回0,则表示没有写入内容)
    	
    	失败  	-1  	重置错误码
*/
  • 示例代码:
#include <stdio.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>


int main(int argc, const char *argv[]){

    if(3 != argc){

        printf("Usage : %s src_file dest_file\n",argv[0]);

        return -1;
    }

    int fd1 = open(argv[1],O_RDONLY);

    if(-1 == fd1)
    {

        perror("open error");

        return -1;
    
    }
    
    int fd2 = open(argv[2],O_WRONLY|O_CREAT|O_TRUNC,0666);

    if(-1 == fd2)
    {

        perror("open error");

        return -1;
    
    }
    
    int ret = 0;
    char buff[128] = {0};

    while(0 < (ret = read(fd1,buff,sizeof(buff)))){
        

        write(fd2,buff,ret);


    }

    close(fd1);

    close(fd2);
    
    
    return 0;
}

http://www.niftyadmin.cn/n/5034057.html

相关文章

汽车行业新闻稿怎么写?怎么写关于汽车的新闻稿?

撰写汽车行业新闻稿需要遵循一定的结构和要点&#xff0c;以确保内容准确、清晰&#xff0c;并能吸引读者的兴趣。以下是关于汽车的新闻稿的一些写作要点和建议&#xff0c;接下来伯乐网络传媒就来给大家分享一下&#xff1a; 标题醒目&#xff1a;新闻稿的标题应该简洁明了&am…

【多卡训练报错】:The server socket has failed to listen on any local network address.

错误&#xff1a; RuntimeError: The server socket has failed to listen on any local network address. The server socket has failed to bind to [::]:16664 (errno: 98 - Address already in use). The server socket has failed to bind to 0.0.0.0:16664 (errno: 98 -…

springcloud3 指定nacos的服务名称和配置文件的group,名称空间

一 指定读取微服务的配置文件 1.1 工程结构 1.2 nacos的配置 1.配置文件 2.内容 1.3 微服务的配置文件 1.bootstrap.yml内容 2.application.yml文件内容 1.4 验证访问 控制台&#xff1a; 1.5 nacos服务空间名称和groupid配置 1.配置文件配置 2.nacos的查看

Vue3+Ts中使用Jquery

1、安装jquery&#xff1a;npm i jquery --save 2、在vue.config.js文件中添加如下代码&#xff1a; const { defineConfig } require(vue/cli-service) const webpack require(webpack)module.exports defineConfig({configureWebpack: {plugins: [// 配置jQuerynew webp…

Windows 10 + Jenkins 2.4 安装插件时https 的证书问题及解决

本篇面临与解决的问题 本篇是在 Windows 10中安装Jenkins 2.414.1 &#xff0c; 在安装完成之后安装一些需要的插件&#xff0c; 可以在浏览器端安装插件的时候&#xff0c; 总是不成功&#xff0c; 控制台报以下错误&#xff1a; SEVERE h.model.UpdateCenter$DownloadJob#r…

瑞芯微RK3568:Debian系统如何安装Docker

本文基于HD-RK3568-IOT评估板演示Debian系统安装Docker&#xff0c;该方法适用于RK356X全系产品。 HD-RK3568-IOT评估板基于HD-RK3568-CORE 工业级核心板设计&#xff08;双网口、双CAN、5路串口&#xff09;&#xff0c;接口丰富&#xff0c;适用于工业现场应用需求&#xff…

无涯教程-JavaScript - MROUND函数

描述 MROUND函数返回一个舍入为所需倍数的数字。 MROUND函数是Excel中的15个舍入函数之一。 语法 MROUND (number, multiple)争论 Argument描述Required/OptionalNumberThe value to round.RequiredMultipleThe multiple to which you want to round number.Required Note…

canal

1 安装配置 1.1 下载 https://github.com/alibaba/canal/releases/download/canal-1.1.6/canal.deployer-1.1.6.tar.gz 1.2 mysql配置binlog # on 时&#xff0c;代表着开启 show VARIABLES like log_bin; 1.3 创建MySQL canal用户 # 创建用户 create user canal% ident…