4-2:实现cp命令
2024-08-31 19:04:01
#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <errno.h> #define BUF_SIZE 1024 void cp(char *filename1, char *filename2)
{
int fd1 = open(filename1, O_RDONLY);
if (fd1 == -1) {
printf("fail to open %s:%s\n", filename1, strerror(errno));
return;
}
int fd2 = open(filename2, O_WRONLY | O_APPEND | O_CREAT, 0664);
char szBuf[BUF_SIZE];
int bytes;
while(1) {
memset(szBuf, 0, BUF_SIZE);
bytes = read(fd1, szBuf, BUF_SIZE);
if (bytes == 0) {
break;
}
write(fd2, szBuf, bytes);
}
} int main(int argc, char **argv)
{
if (argc != 3 || !strcmp(argv[1], "--help")) {
printf("Usage:%s [Src] [Dest]\n", argv[0]);
printf("\tSrc:Source file\n");
printf("\tDest:Destin file\n");
return 0;
}
cp(argv[1], argv[2]);
return 0;
}
待加强:如果要复制一个包含空洞(连续的空字节)的普通文件,并且要求目标文件的空洞与源文件保持一致。
最新文章
- Linked List Start!
- html框架—多对话框(相同id)处理
- 自定义cell
- 解决在.ashx文件中判断Session 总是NULL的方法
- [cocos2d]场景切换以及切换进度显示
- Linux 常用命令使用方法大搜刮(转)
- 几个关于JPEGLIB库的博客
- 团队作业8——第二次项目冲刺(Beta阶段)Day2--5.19
- 【Dijkstra堆优化】洛谷P2243电路维修
- lib和dll文件的初了解
- Django学习笔记之URL与视图cookie和session
- ThreeJS笔记(一)
- 17.4-uC/OS-III消息管理(任务消息队列使用)
- 阿里巴巴Web前端面试的一道JS题目,求解答!!!
- BZOJ2794[Poi2012]Cloakroom——离线+背包
- 微信小程序web-view使用测试总结
- 关于Vector,map等迭代器问题
- Android -- EventBus使用
- .net获取当前url各种属性(文件名、参数、域名、端口等)的方法(转)
- css display&;&;hidden