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相关推荐

  1. zxing cpp linux,开源代码Zxing-VS2010下编译Zxing-CPP

    开源代码Zxing-VS2010下编译Zxing-CPP 开源代码Zxing-VS2010下编译Zxing-CPP 1. 下载Zxing-cpp 源码 下载地址:https://github.com/ ...

  2. linux缓存代码,Linux使用的缓存

    Linux使用的缓存 6.7.1 Linux使用的缓存 不管在硬件设计还是软件设计中,高速缓存是获得高性能的常用手段.Linux 使用了多种和内存管理相关的高速缓存. 1. 缓冲区高速缓存: 缓冲区高 ...

  3. linux程序文本,Linux之文本处理

    Linux之文本处理 一.文本编辑器 在Linux系统中,即使在控制台命令行状态下,也需要进行大量的文本处理工作.Linux系统中几乎所有的配置文件都是以纯文本形式存在的,我们也要对这些文件进行编辑工 ...

  4. php读取子目录下文件内容,php小代码----目录下读取子文件或子目录_PHP教程

    php小代码----目录下读取子文件或子目录 rootPath = $rootPath; if (is_dir($this->rootPath)) { $this->rootPath = ...

  5. c语言程序代码_10道C语言笔试模拟题,来看看你掌握的怎么样?

    C语言 1.分析下面的C代码,它的运行结果可能是: #include<stdio.h> int main(void) {int i = 0;if (i = 1)printf("i ...

  6. 单片机上运行linux程序代码,在Linux下烧录51单片机

    原标题:在Linux下烧录51单片机 *本文作者:LEdge1,本文属 FreeBuf原创奖励计划,未经许可禁止转载. 背景 我一直在学习Linux 系统,但是最近还要学习51单片机,所以在Linux ...

  7. linux 程序 减肥,linux下实用软件组合 -- 为你的 linux 减肥!

    linux下实用软件组合 -- 为你的 linux 减肥! 发布时间:2005-12-07 19:49:38来源:红联作者:Mrlinux KDE 和 Gnome 都是很好用的桌面系统.如果你的电脑配 ...

  8. linux samba代码,Linux下Samba服务器源码安装及配置

    获取samba源代码 你可以通过执行svn命令svn co svn://svnanon.samba.org/samba/trunk samba.获取最新的samba源文件,也可以直接从http://s ...

  9. linux 文件系统 代码,Linux文件系统介绍

    本篇博文介绍一下Linux系统的文件系统, 由于Linux标准委员会制定了一个文件系统标准FHS, 文件系统层级标准, 规定Linux发行版应该创建哪些目录存储特定类型的文件. 根目录记为 / 一级目 ...

最新文章

  1. kmeans实际应用例子 java_k-means聚类JAVA实例
  2. 神器诞生!E3成首个3.50可降级国产电子狗
  3. juniper srx解决内网不能telnet公网IP的方法
  4. android 关于提高第三方app的service优先级
  5. 关于perl6的若干问题?
  6. 在dw中它只能对html文件进行编辑,DreamWeaver期末考试试卷
  7. 智慧城市智慧园区智慧路灯方案介绍
  8. 油管上如何带中文字幕看Peoplesoft最新视频
  9. 初探一个0代码开发—iVX平台
  10. 计算机无法连接移动硬盘,移动硬盘无法访问解决大全
  11. 如何实现网页分享到微信,微博,空间
  12. su oracle是什么意思,su 命令 以及 su oracle 与su - oracle 命令区别
  13. 学渣的刷题之旅 leetcode刷题 13.罗马数字转整数
  14. Linux权限管理(week1_day5)--技术流ken
  15. Oracle 11g加密备份
  16. Jedis源码解析(一):Jedis简介、Jedis模块源码解析
  17. 中小型企业 CRM 系统有哪些好的推荐?
  18. L1-8 牛的对称 (20 分)
  19. 456. 132模式
  20. 畜禽产品安全可追溯监管平台

热门文章

  1. 数字孪生技术在智慧园区领域的实践
  2. 经典卷积模型回顾20—YOLOv1实现猫狗检测(matlab,Tensorflow2.0)
  3. bug---win10电脑权限-文件操作失败。 C:Windows\System32\drivers\etc\hosts 拒绝访问。 (CF@O)
  4. matlab cell2mat 丢数据,cell2mat 以后,为什么原本的数据会发生改变??
  5. Windows XP环境下IPSec 隧道的配置
  6. 那些看过有收获或者回味无穷的电影
  7. java float to byte_java float数组转byte数组,byte数组转float数组
  8. 人车识别系统 YOLOV3 人车识别测试
  9. 网站怎么选择合适的香港服务器带宽
  10. 微信小程序开发-分享(根据接口返回值分享)