#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <error.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
// 运行时需两个参数,一个是源文件,一个是目标文件
int main(int argc, char* argv[]) {
char *src_file;
char *dest_file;
int src_fd;
int dest_fd;
char buff[256];
int ret;
//检查参数
if (argc != 3) {
perror("需输入连个参数\n");
exit(1);
}
//取出源文件名和目标文件名
src_file = argv[1];
dest_file = argv[2];
//打开源文件
src_fd = open(src_file, O_RDONLY);
if (src_fd < 0) {
perror("源文件打开失败");
}
//打开目标文件
dest_fd = open(dest_file, O_WRONLY|O_CREAT, 0666);
if (dest_fd < 0) {
perror("目标文件打开失败");
}
while (1) {
ret = read(src_fd, buff, sizeof(buff));
if (ret < 0) {
perror("读取文件失败");
exit(0);
}
ret = write(dest_fd, buff, ret);
if (ret < 0) {
perror("写文件失败");
exit(1);
}
else if (ret == 0){
sleep(1);
printf("写入结束\n");
break;
}
}
//关闭文件描述符
close(src_fd);
close(dest_fd);
return 0;
}
//运行时需两个参数
#include <stdlib.h>
#include <unistd.h>
#include <error.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
// 运行时需两个参数,一个是源文件,一个是目标文件
int main(int argc, char* argv[]) {
char *src_file;
char *dest_file;
int src_fd;
int dest_fd;
char buff[256];
int ret;
//检查参数
if (argc != 3) {
perror("需输入连个参数\n");
exit(1);
}
//取出源文件名和目标文件名
src_file = argv[1];
dest_file = argv[2];
//打开源文件
src_fd = open(src_file, O_RDONLY);
if (src_fd < 0) {
perror("源文件打开失败");
}
//打开目标文件
dest_fd = open(dest_file, O_WRONLY|O_CREAT, 0666);
if (dest_fd < 0) {
perror("目标文件打开失败");
}
while (1) {
ret = read(src_fd, buff, sizeof(buff));
if (ret < 0) {
perror("读取文件失败");
exit(0);
}
ret = write(dest_fd, buff, ret);
if (ret < 0) {
perror("写文件失败");
exit(1);
}
else if (ret == 0){
sleep(1);
printf("写入结束\n");
break;
}
}
//关闭文件描述符
close(src_fd);
close(dest_fd);
return 0;
}
//运行时需两个参数