read/write函数实现文件的copy

来源:互联网 发布:淘宝斗鱼刷人气违规吗 编辑:程序博客网 时间:2024/06/05 05:20


#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#define N 32
int main(int argc, const char *argv[])
{
int fdread, fdwrite;
int num;
char buff[N] = {0};
if (argc < 2)
{
printf("users: ./a.out + filename\n");
return 0;
}
if (-1 == (fdread = open(argv[1], O_RDONLY)))
{
perror("open failed\n");
return 0;
}
if (-1 == (fdwrite = open("./text", O_WRONLY|O_TRUNC|O_CREAT, 0666)))
{
perror("open failed\n");
return 0;
}
while((num = read(fdread, buff, sizeof(buff))) > 0)
{
write(fdwrite, buff, num);
//这里是注意要填写num,因为如果填写sizeof(buff),可能最后一次并不会将buff读满
//这样最后一次就会多写一些数据造成代码的错误
}
close(fdread);
close(fdwrite);
return 0;
}