设为首页 加入收藏

TOP

Linux C实现cp功能(二)
2014-11-23 22:06:53 来源: 作者: 【 】 浏览:29
Tags:Linux 实现 功能
1","");


//判断最后是否写入


if(n_chars == -1)


oops("Read error from,path1","");


//关闭文件


if(close(in_fd) == -1||close(out_fd) == -1)


oops("Error closing files","");


}




void oops(char *s1,char *s2)


{


fprintf(stderr,"Error:%s ",s1);


perror(s2);


exit(1);


}




int exists(char *filename)


{


return access(filename,F_OK);



}



int is_file(char *filename)


{


struct stat filebuf;


stat(filename,&filebuf);


if(S_ISREG(filebuf.st_mode))


return 1;


else


return 0;


}



char *deal_with(char *filename,char *filename2)


{


char *file=NULL;;


if((file = (char *)malloc(strlen(basename(filename))+strlen(filename2)+3)) == NULL)


perror("malloc error");


else{


if(filename2[strlen(filename2)-1] == '/'){


strcpy(file,filename2);


strcat(file,basename(filename));


}else{


strcpy(file,filename2);


strcat(file,"/");


strcat(file,basename(filename));


}


}


return file;


}



char *deal_path(char *file,char *file2)


{


char *filename=NULL;


if((filename = (char *)malloc(strlen(file)+strlen(file2)+3)) == NULL)


perror("Malloc erro:");


else{



if(file[strlen(file)-1] == '/'){


strcpy(filename,file);


strcat(filename,file2);


}else{


strcpy(filename,file);


strcat(filename,"/");


strcat(filename,file2);


}


}


return filename;



}


用的最多的还是这个deal_path这个函数,这个函数会判断/tmp/ /tmp这个的区别,最终会将给出的


两个参数合并成一个文件路径创建并写入要拷贝的内容。


四:总结


C语言基础很重要,最近在看C专家编程,C和指针,感触很深里面很多C语言的细节我都不知道。还有linux C编程实战中的关于结构体的字节对齐我也知之甚少。后期会用博客记录相关内容加深自己对这些内容的理解。


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇shell脚本中的“2< " ">&.. 下一篇C语言的函数返回值

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: