#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#define SIZE 1024
int main(int argc, char *argv[])
{
int to_fd,from_fd;
int bytes_read,bytes_write;
char buffer[SIZE];
char *ptr;
/*检查参数是否是三个*/
if(argc != 3)
{
fprintf(stderr,"Usage:%s fromfile tofile/n/a",argv[0]);
exit(1);
}
/* 打开源文件,源文件只读,判断是否出错*/
if(-1 == (from_fd = open(argv[1], O_RDONLY)))
{
fprintf(stderr,"Open %s Error:%s/n",argv[1],strerror(errno));
exit(1);
}
/*打开目的文件并创建它,目的文件只读,判断是否出错*/
{
if(-1 == (to_fd = open(argv[2],O_WRONLY | O_CREAT,S_IRUSR | S_IWUSR)))
{
fprintf(stderr,"Open %s Error: %s/n",argv[2],strerror(errno));
exit(1);
}
}
/*拷贝文件内容*/
while(bytes_read = read(from_fd,buffer,SIZE))
{
if((-1 == bytes_read) && (errno != EINTR))
{
break;
}
else if(bytes_read > 0)
{
ptr = buffer;
while(bytes_write = write(to_fd,ptr,bytes_read))
{
if((-1 == bytes_write) && (errno != EINTR))
{
break;
}
else if(bytes_write > 0)
{
ptr += bytes_write;
bytes_read -= bytes_write;
}
}
if(-1 == bytes_write)
{
break;
}
}
}
close(from_fd);
close(to_fd);
exit(0);
}
LINUX拷贝文件的源程序
最新推荐文章于 2024-08-30 21:04:15 发布