qfedu-linux-advanced-level/day2/d2.c

52 lines
958 B
C

// 使用系统调用实现cp命令
// 1. 打开源文件
// 2. 创建目标文件
// 3. 循环读取源文件,写入目标文件
// 4. 关闭文件
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
int main(int argc, char *argv[])
{
int srcfd, dstfd;
char buf[1024];
int len;
if (argc < 3)
{
printf("./a.out srcfile dstfile\n");
exit(1);
}
// 打开源文件
srcfd = open(argv[1], O_RDONLY);
if (srcfd < 0)
{
perror("open");
exit(1);
}
// 创建目标文件
dstfd = open(argv[2], O_WRONLY | O_CREAT | O_TRUNC, 0664);
if (dstfd < 0)
{
perror("open");
exit(1);
}
// 循环读取源文件,写入目标文件
while ((len = read(srcfd, buf, sizeof(buf))) > 0)
{
write(dstfd, buf, len);
}
// 关闭文件
close(srcfd);
close(dstfd);
return 0;
}
// ./a.out srcfile dstfile