read函数从打开的设备或文件中读取数据。

#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);
返回值:成功返回读取的字节数,出错返回-1并设置errno,如果在调read之前已到达文件末尾,则这次read返回0

读常规文件时,在读到count个字节之前已到达文件末尾。例如,距文件末尾还有30个
字节而请求读100个字节,则read返回30,下次read将返回0。
从终端设备读,通常以行为单位,读到换行符就返回了。
从网络读,根据不同的传输层协议和内核缓存机制,返回值可能小于请求的字节数,后
面socket编程部分会详细讲解。

write函数向打开的设备或文件中写数据。
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);
返回值:成功返回写入的字节数,出错返回-1并设置errno

写常规文件时,write的返回值通常等于请求写的字节数count,而向终端设备或网络写
则不一定。

把main.c的内容全部拷贝到main.c.copy中:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include<stdio.h>
#include<unistd.h>
#include<string.h>
 int main(void)
    int len;
    char buf[1024];
    umask(0);
    int fd1=open("main.c",O_RDWR);
    int fd2=open("main.c.copy",O_CREAT|O_WRONLY|O_TRUNC,0644);
   while((len= read(fd1,buf,sizeof(buf)))>0)
         write(fd2,buf,len);
    close(fd1);
    close(fd2);
    return 0;

read:是把文件内容读到缓冲区

write:是把缓冲区内容写到文件

欢迎加入作者的小圈子

扫描下方左边二维码加入QQ交流群,扫描下方右边二维码关注个人微信公众号并获取更多隐藏干货,QQ交流群:816747642 微信公众号:Crystal软件学堂

作者:Crystal软件学堂
bilibili视频教程地址:https://space.bilibili.com/5782182
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在转载文章页面给出原文连接。
如果你觉得文章对你有所帮助,烦请点个推荐,你的支持是我更文的动力。
文中若有错误,请您务必指出,感谢给予我建议并让我提高的你。