cjozGV 的学生作业:
#include
#include
#include
#include
#include //文件权限
#define BUF_SIZE 4096 //缓冲区大小
int main(int argc, char *argv[])
{
if(argc != 3) {
fprintf(stderr,"用法: %s \n",argv[0]);
exit(EXIT_FAILURE);
}
int fd_src = open(argv[1],O_RDONLY);
if(fd_src < 0) {
perror("打开源文件失败");
exit(EXIT_FAILURE);
}
int fd_dst = open(argv[2],O_WRONLY | O_CREAT | O_TRUNC, 0666);
if(fd_dst < 0) {
perror("打开目标文件失败");
close(fd_src);
exit(EXIT_FAILURE);
}
char buffer[BUF_SIZE]; //临时存放数据的缓冲区
ssize_t bytes_read; //每次read返回的字节数
while((bytes_read =read(fd_src,buffer,BUF_SIZE)) > 0 ) {
// 把读到的数据写入目标文件
ssize_t bytes_written = write(fd_dst,buffer,bytes_read);
if(bytes_written != bytes_read) {
perror("写入文件失败");
close(fd_src);
close(fd_dst);
exit(EXIT_FAILURE);
}
}
if(bytes_read < 0) {
perror("读取文件失败");
}
close(fd_src);
close(fd_dst);
printf("文件复制完成: %s -> %s\n",argv[1],argv[2]);
return 0;
}