copy文件的Linux程序代码,Linux下C语言实现CopyFile
Linux下C语言实现文件拷贝
/*
Function:copy file from file1 to file2
How to execute: ./copyfile file1 file2 (under Linux)
Data:2007-05-09
*/
#include /*fprintf(),stderr,BUFSIZ*/
#include /**/
#include /*stderror()*/
#include /*open(),flag*/
#include /*errno*/
#include /*ssize_t*/
#include
#include /*mode_t*/
#define BUFFER_SIZE 3
int main(int argc,char **argv)
{
int from_fd,to_fd;
int bytes_read,bytes_write;
char buffer[BUFFER_SIZE];
char *ptr;
if(argc!=3)
{
fprintf(stderr,"Usage:%s fromfile tofile\n\a",argv[0]);
exit(1);
}
/* 打开源文件 */
if((from_fd=open(argv[1],O_RDONLY))==-1) /*open file readonly,返回-1表示出错,否则返回文件描述符*/
{
fprintf(stderr,"Open %s Error:%s\n",argv[1],strerror(errno));
exit(1);
}
/* 创建目的文件 */
/* 使用了O_CREAT选项-创建文件,open()函数需要第3个参数,
mode=S_IRUSR|S_IWUSR表示S_IRUSR 用户可以读 S_IWUSR 用户可以写*/
if((to_fd=open(argv[2],O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR))==-1)
{
fprintf(stderr,"Open %s Error:%s\n",argv[2],strerror(errno));
exit(1);
}
/* 以下代码是一个经典的拷贝文件的代码 */
while(bytes_read=read(from_fd,buffer,BUFFER_SIZE))
{
/* 一个致命的错误发生了 */
if((bytes_read==-1)&&(errno!=EINTR))
break;
else if(bytes_read>0)
{
ptr=buffer;
while(bytes_write=write(to_fd,ptr,bytes_read))
{
/* 一个致命错误发生了 */
if((bytes_write==-1)&&(errno!=EINTR))
break;
/* 写完了所有读的字节 */
else if(bytes_write==bytes_read)
break;
/* 只写了一部分,继续写 */
else if(bytes_write>0)
{
ptr+=bytes_write;
bytes_read-=bytes_write;
}
}
/* 写的时候发生的致命错误 */
if(bytes_write==-1)
break;
}
}
close(from_fd);
close(to_fd);
return;
}
copy文件的Linux程序代码,Linux下C语言实现CopyFile相关推荐
- zxing cpp linux,开源代码Zxing-VS2010下编译Zxing-CPP
开源代码Zxing-VS2010下编译Zxing-CPP 开源代码Zxing-VS2010下编译Zxing-CPP 1. 下载Zxing-cpp 源码 下载地址:https://github.com/ ...
- linux缓存代码,Linux使用的缓存
Linux使用的缓存 6.7.1 Linux使用的缓存 不管在硬件设计还是软件设计中,高速缓存是获得高性能的常用手段.Linux 使用了多种和内存管理相关的高速缓存. 1. 缓冲区高速缓存: 缓冲区高 ...
- linux程序文本,Linux之文本处理
Linux之文本处理 一.文本编辑器 在Linux系统中,即使在控制台命令行状态下,也需要进行大量的文本处理工作.Linux系统中几乎所有的配置文件都是以纯文本形式存在的,我们也要对这些文件进行编辑工 ...
- php读取子目录下文件内容,php小代码----目录下读取子文件或子目录_PHP教程
php小代码----目录下读取子文件或子目录 rootPath = $rootPath; if (is_dir($this->rootPath)) { $this->rootPath = ...
- c语言程序代码_10道C语言笔试模拟题,来看看你掌握的怎么样?
C语言 1.分析下面的C代码,它的运行结果可能是: #include<stdio.h> int main(void) {int i = 0;if (i = 1)printf("i ...
- 单片机上运行linux程序代码,在Linux下烧录51单片机
原标题:在Linux下烧录51单片机 *本文作者:LEdge1,本文属 FreeBuf原创奖励计划,未经许可禁止转载. 背景 我一直在学习Linux 系统,但是最近还要学习51单片机,所以在Linux ...
- linux 程序 减肥,linux下实用软件组合 -- 为你的 linux 减肥!
linux下实用软件组合 -- 为你的 linux 减肥! 发布时间:2005-12-07 19:49:38来源:红联作者:Mrlinux KDE 和 Gnome 都是很好用的桌面系统.如果你的电脑配 ...
- linux samba代码,Linux下Samba服务器源码安装及配置
获取samba源代码 你可以通过执行svn命令svn co svn://svnanon.samba.org/samba/trunk samba.获取最新的samba源文件,也可以直接从http://s ...
- linux 文件系统 代码,Linux文件系统介绍
本篇博文介绍一下Linux系统的文件系统, 由于Linux标准委员会制定了一个文件系统标准FHS, 文件系统层级标准, 规定Linux发行版应该创建哪些目录存储特定类型的文件. 根目录记为 / 一级目 ...
最新文章
- kmeans实际应用例子 java_k-means聚类JAVA实例
- 神器诞生!E3成首个3.50可降级国产电子狗
- juniper srx解决内网不能telnet公网IP的方法
- android 关于提高第三方app的service优先级
- 关于perl6的若干问题?
- 在dw中它只能对html文件进行编辑,DreamWeaver期末考试试卷
- 智慧城市智慧园区智慧路灯方案介绍
- 油管上如何带中文字幕看Peoplesoft最新视频
- 初探一个0代码开发—iVX平台
- 计算机无法连接移动硬盘,移动硬盘无法访问解决大全
- 如何实现网页分享到微信,微博,空间
- su oracle是什么意思,su 命令 以及 su oracle 与su - oracle 命令区别
- 学渣的刷题之旅 leetcode刷题 13.罗马数字转整数
- Linux权限管理(week1_day5)--技术流ken
- Oracle 11g加密备份
- Jedis源码解析(一):Jedis简介、Jedis模块源码解析
- 中小型企业 CRM 系统有哪些好的推荐?
- L1-8 牛的对称 (20 分)
- 456. 132模式
- 畜禽产品安全可追溯监管平台
热门文章
- 数字孪生技术在智慧园区领域的实践
- 经典卷积模型回顾20—YOLOv1实现猫狗检测(matlab,Tensorflow2.0)
- bug---win10电脑权限-文件操作失败。 C:Windows\System32\drivers\etc\hosts 拒绝访问。 (CF@O)
- matlab cell2mat 丢数据,cell2mat 以后,为什么原本的数据会发生改变??
- Windows XP环境下IPSec 隧道的配置
- 那些看过有收获或者回味无穷的电影
- java float to byte_java float数组转byte数组,byte数组转float数组
- 人车识别系统 YOLOV3 人车识别测试
- 网站怎么选择合适的香港服务器带宽
- 微信小程序开发-分享(根据接口返回值分享)