文件IO进阶使用
来源:互联网 发布:漫步者煲音箱软件 编辑:程序博客网 时间:2024/05/21 18:35
题目:实现一个文件的拷贝,先拷贝前半段,再拷贝后半段(1/2段)
调试: ./a.out fork.c info //拷贝fork.c 到info文件
运行效果:
源代码:
copy_file.c
#include<stdio.h>#include<string.h>#include<errno.h>#include<stdlib.h>#include <unistd.h>#include <sys/types.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>intcopy_file_fore(int fd_src,int fd_dest,int len);int copy_file_last(int fd_src,int fd_dest,int len);int init_open_file(int fd_src,int fd_dest,char const *path1, char const *path2);int main(int argc, const char *argv[]){pid_t pit;int fd_src,fd_dest;int len;if(argc < 3){fprintf(stderr,"Usage : %s,argv[1],argv[2]",argv[0]);exit(EXIT_FAILURE);}if((fd_src = open(argv[1],O_RDONLY)) < 0){fprintf(stderr,"FAIL TO OPRN FILE : %s,%s\n",argv[1],strerror(errno));exit(EXIT_FAILURE);}if((fd_dest = open(argv[2],O_WRONLY | O_CREAT | O_TRUNC,0666)) < 0){fprintf(stderr,"FAIL TO OPRN FILE : %s,%s\n",argv[2],strerror(errno));exit(EXIT_FAILURE);}len = lseek(fd_src,0,SEEK_END);ftruncate(fd_dest,len);if((pit = fork()) == -1){perror("FAIL TO CREAT PID:");exit(EXIT_FAILURE);}if(pit != 0){init_open_file( fd_src, fd_dest, argv[1], argv[2]);copy_file_fore(fd_src,fd_dest , len / 2);}if(pit == 0){init_open_file( fd_src, fd_dest, argv[1], argv[2]);copy_file_last( fd_src, fd_dest , len / 2);}close(fd_src);close(fd_dest);return 0;}intcopy_file_fore(int fd_src,int fd_dest,int len){char buf[1024];int n = 0;intcount = 0;while(1){n = read(fd_src,buf,sizeof(buf));write(fd_dest,buf,n);count += n;if(count >= len)break;}return 0;}int copy_file_last(int fd_src,int fd_dest,int len){int n = 0;char buf[1024];lseek(fd_src,len,SEEK_SET);lseek(fd_dest,len,SEEK_SET);while(1){n = read(fd_src,buf,sizeof(buf));write(fd_dest,buf,n);if(n <= 0)break;}return 0;}int init_open_file(int fd_src,int fd_dest,char const *path1, char const *path2){close(fd_src);close(fd_dest);if((fd_src = open(path1,O_RDONLY)) < 0){fprintf(stderr,"FAIL TO OPRN FILE : %s,%s\n",path1,strerror(errno));exit(EXIT_FAILURE);}if((fd_dest = open(path2,O_WRONLY )) < 0){fprintf(stderr,"FAIL TO OPRN FILE : %s,%s\n",path2,strerror(errno));exit(EXIT_FAILURE);}return 0;}
- 文件IO进阶使用
- SpringMVC使用进阶-文件上传
- SpringMVC使用进阶-文件上传
- (5)Android进阶——Android文件IO详解
- 使用IO完成文件拷贝
- 文件IO基本使用攻略
- IO:文件过滤器的使用
- 使用IO库读取文件
- 使用IO流 读写文件
- node.js中Socket.IO的进阶使用技巧
- node.js中Socket.IO的进阶使用技巧
- android使用mk文件的进阶
- android使用mk文件的进阶
- Android进阶:使用trace文件分析ANR
- Socket.IO进阶
- Socket.IO进阶
- java进阶 ------ IO流
- Socket.IO进阶
- 怎样可以把桌面文件的存放目录转移到D盘
- 中国iOS开发者增长9倍,进入机会依然很多
- Win8 无网络访问权限
- Linux用户管理
- 分享Visual SVN Hook Script—— 提交时必须输入log信息
- 文件IO进阶使用
- iOS视频播放代码
- InnoDB存储引擎的启动、关闭与恢复
- hdu_3785 寻找大富翁
- Nginx配置文件详细说明
- 第一个spring入门案例
- 常用javascript 语法
- Maya DG插件
- codeforces 317 A Perfect Pair