红联Linux门户
Linux帮助

动手实现linux中的cp命令(可自行拓展)

发布时间:2016-09-16 15:42:16来源:linux网站作者:Engineer-Mr-Yang
我们在学习系统编程的时候,一定会有这样的经历,让你动手实现一个简单的cp命令,也就是拷贝相应的文件到对应的目录,或者说是复制吧,当然,实现非常的简单,我们来看看源码吧:
 
#include <stdio.h>  
#include <string.h>  
#include <unistd.h>  
#include <fcntl.h>
int main(int argc ,char *argv[])  
{  
if(argc != 3)  
{  
fprintf(stderr , "input argument error\n");  
return -1 ;   
int  src_fd ;   
int  dest_fd ;
src_fd = open(argv[1] , O_RDONLY);  
if(-1 == src_fd)  
{  
perror("mycy srcfile error");  
return -2 ;   
}  
char ch ;   
dest_fd = open(argv[2] , O_WRONLY | O_CREAT | O_EXCL  , 0777);  
if(dest_fd < 0)  
{  
//文件存在,判断是否覆盖  
printf("Over write ? Y/N\n");  
ch = getchar();  
if(ch == 'Y')  
{  
close(dest_fd);  
dest_fd = open(argv[2] , O_WRONLY | O_TRUNC);  
}else  
{  
return  0 ;   
}  
}  
//文件不存在,直接创建成功
char buffer[10] = {0} ;  
int ret ;   
while(1)  
{  
ret = read(src_fd , buffer , 10);  
write(dest_fd , buffer , ret);  
if(ret != 10)  
break;  
}
close(dest_fd);  
close(src_fd);
return 0 ;   
}
 
本文永久更新地址:http://www.linuxdiyf.com/linux/24221.html