Linux C实现cp命令
Linux C实现cp命令
- 1.分析
- 2.代码
- 3.可以改进的地方
1.分析
cp命令本质上是把一个文件的内容复制到另一个文件里面,非快捷方式(软链接),那么很容易想到的就是文件IO,我们需要一直从源文件A读,不停的写到目标文件B当中,就可以了。
2.代码
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>int main(){//1.设置读文件的文件描述符int srcfd = open("english.txt", O_RDONLY);if(srcfd == -1) {perror("open source file");}//2.设置写文件的文件描述符int dstfd = open("copy.txt", O_WRONLY | O_CREAT, 0777);if(dstfd == -1) {perror("open destination file");}//3.读数据并且写入char buf[1024] = {0};int len = 0;while((len=read(srcfd, buf, sizeof(buf))) > 0) {write(dstfd, buf, len);}//4.关闭文件描述符close(dstfd);close(srcfd);return 0;
}
首先你要确保源文件是存在的,这和cp命令的要求是一样的,然后目标文件的用法采用的是带有权限设置的第二种用法,在写文件的open当中,使用的是open的第一种用法。关于read的函数参数以及返回值都可以通过man文档来获取帮助,比如man 2 open,学会看文档确实事半功倍,相关的头文件,同名函数的一系列用法,参数的具体意义,返回值的情况,不同错误号对应的情况。
3.可以改进的地方
如果想更像cp命令一点,把目标文件和源文件都设置成程序的参数传入,然后对源文件做一个判断。关于创建的目标文件权限,可以使用文件描述符的相关函数获取源文件的相关信息,然后对目标文件设置成一样的权限(比如0755)。
Linux C实现cp命令相关推荐
- linux cp -r 参数,Linux系统中cp命令的参数及用法详解
Linux系统中cp命令主要是用来复制文件或者目录.下面由学习啦小编为大家整理了Linux系统中cp命令的参数及用法详解的相关知识,希望对大家有帮助! Linux系统中cp命令的参数及用法详解:参数说 ...
- linux cp命令忽略覆盖,linux cp:Linux怎么取消cp命令覆盖文件提示
今天来聊聊一篇关于linux cp:Linux怎么取消cp命令覆盖文件提示的文章,现在就为大家来简单介绍下linux cp:Linux怎么取消cp命令覆盖文件提示,希望对各位小伙伴们有所帮助. 可以试 ...
- linux cp命令 强制覆盖,Linux中使用cp命令进行强制覆盖的方法
cp在拷贝时,如果遇到相同的文件名的文件,就会不断询问是否覆盖,让你输入yes or no .为什么呢?这是为了linux为了安全考虑,在cp命令上用了别名.也就是你输入只是输入cp命令时,其实系统是 ...
- linux cp 全覆盖,Linux中使用cp命令进行强制覆盖的方法
cp在拷贝时,如果遇到相同的文件名的文件,就会不断询问是否覆盖,让你输入yes or no .为什么呢?这是为了linux为了安全考虑,在cp命令上用了别名.也就是你输入只是输入cp命令时,其实系统是 ...
- Linux文件目录操作命令-cp命令
一.cp命令 cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一.一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不管你是否使用-i参 ...
- 在linux终端显示cp命令复制文件时的速度
cp命令显示拷贝的速度 在window平台上复制一个文件时可以即时查看文件复制时的速度. 在linux平台上查看了cp命令的参数,没有相关参数可以实现此功能,所以需要借助工具来实现此功能. 我平时用的 ...
- linux下使用\cp命令的原因
2019独角兽企业重金招聘Python工程师标准>>> 有时会看到在拷贝文件的时候习惯使用\cp -rf而不是cp -rf,这两者是有区别的:当使用第一种时系统不会提示是否覆盖,第二 ...
- 实现Linux下的cp命令
cp命令的作用:读取源文件写到目标文件 具体实现思路: 1.打开源文件,先判断argc==3,argv[0]为可执行程序的名字,argv[1]为源文件,argv[2]为目标文件 2.当源文件存在的时候 ...
- Linux中的cp命令和mv命令
1.sh:执行.sh结尾的脚本 2.cp:复制文件到指定目录,比如把aa目录下的123.jpg文件复制到bb目录下(复制过后文件在旧文件中存在) cp sourcefile destfile: 文件拷 ...
最新文章
- centos 重启网络服务的方法
- 【Java源码分析】LinkedList源码分析
- 解决oj哈夫曼树问题,学习了priority_queue
- NYOJ-最少步数(dfs)
- Fedora core 2下建立Poptop服务器以及常见问题
- C# WinForm开发系列 - Regular Expression
- source insight工程的相对路径
- python第三天学习总结
- python开始_python开始的一天
- java 初始化和清楚_浅谈Java中的初始化和清理
- 学习之路十四:客户端调用WCF服务的几种方法小议
- 千树万树梨花开:二叉树的实现以及存储结构
- linux开启cups服务,Linux中cups打印服务实战设置
- 程序设计方法学作业—三天打渔两天晒网程序设计
- 测量数据的计算机处理实验报告,测量数据处理实验报告..doc
- GOTS认证咨询,对于GOTS/GRS标准还需关注其污染物的排放是否符合要求
- Flink中的CEP(二)
- Matlab axis函数
- 如何解决360极速浏览器主页无法修改问题
- 显式锁Lock的集大成之作,最细节教程
热门文章
- IPv6是什么意思?哪款堡垒机支持IPv6资产纳管?
- 李大大讲话和贴膜成功学
- matlab 四元数叉乘,四轴飞行玩具的姿态解算的原理3. 点乘与叉乘;四元数
- 微信支付服务端与客户端
- 大学毕业学什么专业好就业?当然IT咯
- 代理: Agent , Agency , Broker , Proxy
- python读取文件按行分割字符串_python在TXT文件中按照某一字符串取出该字符串所在的行方法...
- 快速画圆切线lisp_【求助】关于AutoLISP command “line”命令问题(画圆内接正五边形) 不要推荐我使用“polygon”命令...
- opencv文字旋转 putText旋转90°
- MPU6050教程(转载)