首页 > 系统相关 >Linux系统编程07-read和write

Linux系统编程07-read和write

时间:2022-10-14 22:11:44浏览次数:48  
标签:07 read open write int include buf

read 和 write函数

#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);
  • 参数:

    • fd: 文件描述符, open得到的, 用来操作某个文件

    • buf: 要读取数据存放的地方, 数组的地址

    • count: 指定的数组的大小

  • 返回值:

    • 成功:
      • >0 返回实际的读取到的字节数
      • =0 文件已经读取完了
    • 失败: -1 并且设置了errno
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);
  • 参数:

    • fd:文件描述符, open得到的,用来操作某个文件

    • buf:要往磁盘写入的数据, 数组

    • count:要写的数据的实际大小

  • 返回值:

    • 成功:实际写入的字节数
    • 失败: -1 并设置errno

实例:复制文本文件

copyfile.c

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

int main(int argc, char const *argv[])
{
    // 1.通过open打开english.txt
    int srcfd = open("english.txt", O_RDONLY);
    if (srcfd == -1)
    {
        perror("open err");
        return -1;
    }

    // 2.创建一个新的文件(拷贝文件)
    int destfd = open("cpy.txt", O_WRONLY | O_CREAT, 0664);
    if (destfd == -1)
    {
        perror("write err");
        return -1;
    }

    // 3.频繁的读写操作
    char buf[1024] = {0};
    int len = 0;

    while ((len = read(srcfd, buf, sizeof(buf))) > 0)
    {
        //读多少写多少
        write(destfd, buf, len);
    }

    // 4.关闭文件
    close(destfd);
    close(srcfd);

    return 0;
}

标签:07,read,open,write,int,include,buf
From: https://www.cnblogs.com/anqwjoe/p/16793186.html

相关文章

  • 刷题 LeetCode 203 707 206
    代码随想录LeetCode203. 移除链表元素carl链表#dummyNode思路借助dummyNode简化判断条件细节dummyNode方法保持操作一致性LeetCode707. 设计链表carl......
  • 代码随想录算法训练营第三天 | 203.移除链表元素 707.设计链表 206.反转链表
    链表的数据结构基础链表结构链表是一种通过指针串联在一起的线性结构。每一个节点由两钟部分构成,一部分是数据域,一部分是指针域,指针域存放的指针指向另一个节点。链表......
  • 修改文本CREATE_TEXT/SAVE_TEXT/READ_TEXT
    之前项目上在修改交货单文本,遇到一个问题:发现用SAVE_TEXT修改后,文本没有变.但是READ_TEXT文本,发现能读出来.只是显示的没修改.后来想起,有时候表里有个字段,是控制是否去显示......
  • 操作系统导论习题解答(27. Thread API)
    Interlude:ThreadAPI带着两个问题学习本章节:OS创造和控制线程预留了什么接口?这些接口是如何被设计以实现易用性和实用性?1.ThreadCreation2.ThreadCompletion......
  • 操作系统导论习题解答(26. Concurrency and Threads)
    Concurrency:AnIntroduction我们这里引入了thread(线程)的概念,与前面所说process(进程)的区别如下:线程之间进行上下文切换地址空间保持不变。每个线程都将有一个stack。......
  • 通关数据结构 day_07 -- trie
    Trie基本用法&作用快速地存储和查找字符串集合的数据结构我们在使用trie的过程中,我们使用的字符串一定是都是大写/小写,并且长度不长比分说我们有字符串:abcdefabd......
  • P4053 [JSOI2007] 建筑抢修
    [JSOI2007]建筑抢修题目描述小刚在玩JSOI提供的一个称之为“建筑抢修”的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有Z部落的入侵者。但是T部落的基地里已经有......
  • C++ thread array and join respectively
    #pragmacomment(lib,"rpcrt4.lib")#include<Windows.h>#include<rpcdce.h>#include<iostream>#include<string>#include<thread>#include<vector>usingn......
  • torch进行多GPU卡训练时,报错RuntimeError: Address already in use
    torch进行GPU卡训练时,报错RuntimeError:Addressalreadyinuse参考:https://www.it610.com/article/1279180977062559744.htm问题在于,TCP的端口被占用,一种解决方法是,运行......
  • Java每日一题之Thread的yield和join方法区别
    Java每日一题之Thread的yield和join方法区别​​1.Java线程调度的一点背景​​​​2.理解线程的优先权​​​​3.yield()方法​​​​4.join()方法​​1.Java线程调度的一点......