write函数
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);
功能:
把指定数目的数据写到文件(fd)
参数:
fd : 文件描述符
buf : 数据首地址
count : 写入数据的长度(字节)
返回值:
成功:实际写入数据的字节个数
失败: - 1
read函数
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);
功能:
把指定数目的数据读到内存(缓冲区)
参数:
fd : 文件描述符
buf : 内存首地址
count : 读取的字节个数
返回值:
成功:实际读取到的字节个数
失败: - 1
参考代码
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#define SIZE 128
//文件的简单拷贝 不支持二进制
int main(void)
{
int fdr = -1;
int fdw = -1;
int ret = -1;
char buf[SIZE];
//1. 以只读的方式打开第一个文件
fdr = open("passwd", O_RDONLY);
if (-1 == fdr)
{
perror("open");
goto err0;
}
//2. 以只写的方式打开第二个文件
fdw = open("txt", O_WRONLY | O_CREAT | O_TRUNC, 0644);
if (-1 == fdw)
{
perror("open");
goto err1;
}
//3. 循环拷贝数据
while(1)
{
//从第一个文件中读取数据
memset(buf, 0, SIZE);
ret = read(fdr, buf, SIZE);
if (ret <= 0)
{
perror("read");
break;
}
//将读取的数据写入到第二个文件中
ret = write(fdw, buf, ret);
if (ret <= 0)
{
break;
}
}
//4. 关闭两个文件描述符
close(fdr);
close(fdw);
return 0;
err1:
close(fdr);
err0:
return 1;
}