不带缓存的文件复制程序

来源:互联网 发布:桔子浏览器怎么样知乎 编辑:程序博客网 时间:2024/05/07 07:16
#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <errno.h>#define MAX_SIZE 1024int main(int argc,char *argv[]){    int read_num;    int write_num;    int read_fd;    int write_fd;    char buff[MAX_SIZE];    if(argc != 3)    {        printf("%s fromfile tofile/n",argv[0]);    }    read_fd = open(argv[1],O_RDONLY);        if(read_fd == -1)    {        printf("open %s failure!\n",argv[1]);        exit(1);    }    write_fd = open(argv[2],O_CREAT|O_WRONLY,S_IWUSR);    if(write_fd == -1)    {        printf("create %s failure!\n",argv[2]);        exit(1);    }    while(read_num = read(read_fd,buff,MAX_SIZE)) //未读取完时(!= 0)    {        if(read_num == -1) //读取出错时        {            printf("read date from %s fail\n",argv[1]);            break;        }        else        {            char *p = buff;            while(1)            {                write_num = write(write_fd,p,read_num);                if(write_num == -1)                {                    printf("write date to %s fail\n",argv[2]);                    break;                }                 if(write_num == read_num | write_num == 0) //写完一组或全部写完                {                    break;                }                if(write_num > 0)                {                    p = p + write_num;                    read_num = read_num - write_num;                }            }        }    }    close(read_fd);    close(write_fd);    return 0;}

0 0
原创粉丝点击