您的位置:首页 > 运维架构 > Linux

linux 课堂作业

2016-11-02 21:55 190 查看
linux下文件拷贝代码

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>

#define BUFF_SIZE 1024

int main(int argc,char *argv[])
{
    int from_fp;
    int to_fp;
    char buffer[BUFF_SIZE];
    int read_size;
    int write_size;
    char *ptr;

    if(argc !=  3)//个数不是三个出错
    {
        printf("error%s\n",strerror(errno));
exit(EXIT_FAILURE);
    }

    //打开文件
    if((from_fp = open(argv[1],O_RDONLY)) == -1)
    {
        printf("open %s failure\n",argv[1]);
exit(EXIT_FAILURE);
    }

    if((to_fp = open(argv[2],O_WRONLY | O_CREAT | O_TRUNC,S_IRUSR | S_IWUSR)) == -1)
    {
        printf("open %s failure\n",argv[2]);
exit(EXIT_FAILURE);
    }

    while((read_size = read(from_fp,buffer,BUFF_SIZE)) != 0)
    {
        if(read_size == -1)
        {
            printf("read %s error\n",argv[1]);
 
 break;
        }
        if(read_size > 0)
{
 
 ptr = buffer;
 
 while(write_size = write(to_fp,buffer,read_size))
 
 {
 
     if(write_size == -1)
{
 
 printf("write %s error\n",argv[2]);
 
 break;
}
if(write_size
== read_size)//都写进去了
{
 
 break;
}
else
if(write_size > 0)//写了一部分
{
 
 ptr += write_size;
 
 read_size = read_size - write_size;
}
 
 }
 
 if(write_size == -1)
 
 {
break;
            }
}
    }

    close(from_fp);
    close(to_fp);
    
    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: