文件编程file_copy.c

//Linux文件编程 — — 系统文件调用中的file_cp.c//待修改。。。

 1 #include <stdio.h>
 2 #incldue <sys/stat.h>
 3 #include <fcntl.h>
 4 #include <errno.h>
 5
 6 #define BUFFSIZE 1024
 7
 8 int main(int argc, char *argv[])
 9 {
10     int from_fd, to_fd;
11     int bytes_read, bytes_write;
12     char buffer[BUFFSIZE];
13     char *ptr;
14
15     if(argc != 3)
16     {
17         fprintf(stderr, "Usage: %s from_file to_file\n", argv[0]);
18         exit(EXIT_FAILURE);
19     }
20
21 //open from_file
22     if((from_fd = open(argv[1], O_RDONLY)) == -1)
23     {
24         fprintf(stderr, "Open %s ERROR:%s\n", argv[1], strerror(errno));
25         exit(EXIT_FAILURE);
26     }
27 //creat to_file
28     if((to_fd = open(argv[2], O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR)) == -1)
29     {
30        fprintf(stderr, "Open %s ERROR:%s", argv[2], strerror(errno));
31       exit(EXIT_FAILURE);
32     }
33
34 //经典的拷贝文件代码
35     while(bytes_read = read(from_fd, buffer, BUFFSIZE))
36     {
37     if((bytes_read == -1) && (errno != EINTR)) break;
38     else if(bytes_read > 0)
39     {
40         ptr = buffer;
41         while(bytes_write = write(to_file, buffer, bytes_read))
42         {
43          //发生了一个致命的错误
44         if((bytes_write == -1) && (errno != EINTR)) break;
45         //写完了所有读的字节
46         else if(bytes_write == bytes_read) break;
47         //只写了一部分,继续写
48         else if(bytes_write > 0)
49         {
50             ptr += bytes_write;
51             bytes_read -= bytes_write;
52         }
53         }
54         //写的时候发生了错误
55         if(bytes_write == -1) break;
56     }
57     }
58     close(from_fd);
59     close(to_fd);
60     exit(0);
61 }
时间: 2024-10-20 10:27:06

文件编程file_copy.c的相关文章

C言语模块化开辟(多文件编程)

你好,欢迎离开「C言语模块化开辟」专题,在这里你将进修到大中型程序开辟技巧.本专题由C言语中文网站长执笔,将多年的编程经历灌注贯注个中,典型的理论派,你可以猛击<关于作者><若何才干完成这部教程>理解教程面前的故事.到今朝为止,我们编写的大局部C言语程序都只包括一个源文件,没有将代码疏散到多个模块中,关于只要几百行的小程序来说这或答应以承受,但关于动辄上万行的大中型程序,将一切代码都集中在一个源文件中几乎是一场灾害,后续浏览和保护都将称为顺手的成绩.在C言语中,我们可以将一个.c文

linux应用程序开发-文件编程-系统调用方式

在看韦东山视频linux驱动方面有一些吃力,究其原因,虽然接触过linux应用程序编程,但是没有深入去理解,相关函数用法不清楚,正好看到国嵌视频对这一方面讲的比较透彻, 所以把学习过程记录下来,也作为linux应用程序开发的一个系列吧! 文件编程有两种方式,一是系统调用方式,二是库函数调用. 前者依赖特定的平台,后者不依赖平台. 系统调用:创建 int creat(const char *filename,mode_t mode); filename:要创建的文件名 mode:创建模式 S_IR

多功能电子通讯录(涉及到了双向链表的使用,Linux文件编程等等)

readme.txt //作为一个程序员,我们咋么能不写用户手册呢!MSP的我觉得用户体验是王道,苹果手机的用户体验的确不错!不过WP加油!我去,扯远了!赶紧看我的程序吧!  歡迎使用多功能電子通訊錄V1.0版本        如有BUG敬請原諒     make  之後便可以使用     ./ebook  運行本程序     make clean 清理本程序中間文件     make cleanall 清除所有非源程序文件 PS:我本想直接给大家看代码的,但是在这个过程中,重要不仅仅是代码,首

非缓冲文件编程(实时操作)

在下面情况下需要非缓冲文件编程. //银行数据安全要求严格 //键盘,鼠标,显卡设备 1.文本文件读写操作: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include<io.h> #include<fcntl.h>//文件打开,设置文件打开模式,就是下面的一大列函数. #include<sys/stat.h>//系统底层,sys表示驱动,stat

java文件编程总结

文件编程之一就是文件操作,就是新建,删除,复制,更名 新建文件用createNewFile()方法,要处理IOException异常 新建文件夹用mkdirs()方法 删除一个文件和一个空的文件夹直接用delete()方法 复制粘贴文件和文件夹的类已经给出 删除一个有内容的文件夹的类已经给出 文件的更名: 1.判断file是否存在 2.创建更名后的fileTwo 3.fileTwo调用exists()方法确认没有重名 4.file.renameTo(fileTwo); 注意保证file和file

linux应用开发-系统函数方式文件编程

linux应用开发-系统函数方式文件编程 一 系统调用 指调用系统的函数库 二 文件描述符 性质:一个数字 打开的文件对应一个数字即一个文件描述符 三 常用函数 1 打开文件 open 2 创建文件 creat 3 关闭文件 close 4 读文件 read 5 写文件 write 6 定位文件 lseek 7 复制文件描述符 dup 三 man命令查找顺序 1 命令 man read 2 系统调用函数 man 2 read 3 库函数 四 linux下main函数参数 void main(in

Linux文件编程实例

//捕获fopen调用中的错误 #include <stdio.h> #include <errno.h> #include <string.h> #define MYFILE "missing.txt" int main(  ) { FILE* fin; fin=fopen( MYFILE,"r" ); if( fin==(FILE*)NULL ) { printf( "%s: %s\n",MYFILE,st

JAVA学习(八):JAVA文件编程

本博文主要介绍JAVA文件编程,主要包括通过JDK提供的I/O来从文件读取和写入数据.字节流读写文件的方法.字符流读写文件的方法.如何使用File类创建.删除和遍历文件与目录等操作. 不管是C/C++还是JAVA,都可能生成一些持久性数据,我们可以将数据存储在文件或数据库中,但是对于一些简单性的数据,如果存储在数据库中,则会显得有点得不偿失了,那么,如何在JAVA中将数据存储在文件中就成了中小型程序必须掌握的基本技能了. 下面一一讲解File类简介与文件的创建.删除.重命名,文件夹的创建.重命名

百万级数据记录量优化查询以及导出EXCEL文件编程

通过对完整软件实例(工程设计流水管理系统)编程讲解,让学员熟悉完整软件布局架构及开发思路.比如从界面布局.登录验证.软件注册程序.到软件发布等知识点,贯穿知识点间联系,提升编程整合能力. 中文编程完整软件实例编程解析之工程设计流水管理系统(8课时) 第1课:整体布局.EXCEL表数据导入到软件数据库编程a.整体布局b.EXCEL表数据导入到软件数据库编程第2课:基本信息预先设置编程a.项目名称预设置 第3课:子项目工程日志流水编程解析a.工程日志流水编程 第4课:子项目设计费发放流水编程解析a.