linux文件拷贝(进程方法)
来源:互联网 发布:linux脚本等待 编辑:程序博客网 时间:2024/05/01 06:44
文件拷贝,父进程拷贝该文件的前一半,子进程拷贝后一半
/*************************************************************************> File Name: work.c> Author: XXDK> Email: v.manstein@qq.com > Created Time: Wed 15 Mar 2017 01:41:55 AM PDT ************************************************************************/#include<stdio.h>#include<sys/stat.h>#include<unistd.h>#include<stdlib.h>#include<sys/wait.h>#include<fcntl.h>int main(int argc, const char *argv[]){char buf[32] = {0};int fsrc, fdest;int file_len = 0;int file_len_half = 0;int ret = 0;int count = 0;int count_rmd = 0;pid_t pid;if(argc < 3) {perror("wokao");exit(-1);}fsrc = open(argv[1], O_RDONLY);if(fsrc < 0) {perror("open src error");exit(-1);}fdest = open(argv[2], O_CREAT|O_WRONLY|O_TRUNC);if(fdest < 0) {close(fsrc);perror("open dest error");exit(-1);}printf("ready!\n");file_len = lseek(fsrc, 0, SEEK_END);file_len_half = file_len / 2;count_rmd = file_len_half % sizeof(buf);// 计算最后一次拷贝几个字节count = file_len_half / sizeof(buf);// 计算需要拷贝多少个32次printf("file length: %d bytes, file half lenght: %d\n", file_len, file_len/2);//-----------------------------------------------------------------------------if((pid = fork()) == 0) {// child processint i;lseek(fdest, file_len_half, SEEK_SET);lseek(fsrc, file_len_half, SEEK_SET);while(1) {ret = read(fsrc, buf, sizeof(buf));i++;if(count == i) {ret = read(fsrc, buf, count_rmd);}write(fdest, buf, ret);if(count == i)break;}close(fdest);close(fsrc);} else if(pid > 0) { // parent processint i = 0;lseek(fsrc, 0, SEEK_SET);while(1) {ret = read(fsrc, buf, sizeof(buf));i++;if(count == i) {ret = read(fsrc, buf, count_rmd);}write(fdest, buf, ret);if(count == i)break;}waitpid(-1, NULL, 0);} else {perror("fuck error");close(fdest);close(fsrc);exit(-1);}exit(0);}
0 0
- linux文件拷贝(进程方法)
- linux 拷贝文件方法
- Linux--多进程拷贝一个文件
- 多进程拷贝文件
- 【Linux】利用管道在进程通讯拷贝文件
- Linux-证明子进程从父进程处拷贝了文件描述符
- linux下多进程的文件拷贝与进程相关的一些基础知识
- linux下多进程的文件拷贝与进程相关的一些基础知识
- 文件的拷贝方法
- Linux系统下不同机器之间拷贝文件的方法
- win7中将文件拷贝到虚拟机linux下的方法
- Linux系统下不同机器之间拷贝文件的方法
- win7中将文件拷贝到虚拟机linux下的方法
- 两台linux服务器相互拷贝文件的两个方法
- win7中将文件拷贝到虚拟机linux下的方法
- Linux系统下不同机器之间拷贝文件的方法
- 两台linux服务器相互拷贝文件的两个方法
- 两台linux服务器相互拷贝文件的两个方法
- java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
- Linux基础知识
- 算法练习——Multithreading
- java——深层次文件拷贝,建立定时器守护线程做进度条
- 轻舟已过万重山——真正的技术派公司是怎么联调、测试和发布的?
- linux文件拷贝(进程方法)
- Java魔法堂:String.format详解
- 组合模式(树状结构)
- Linux内核VPN实现源码分析(一)
- u-boot.lds(u-boot.2012.10)
- HDU1501
- C++Primer第五版 第十六章习题答案(21~30)
- 完成端口(CompletionPort)详解
- C++之模板函数