1 删除文件目录链接
解除链接unlink
• man 2 unlink
• 解除链接函数
• int unlink(const char pathname);
– 参数pathname:链接文件的路径
– 返回值:成功返回0,错误返回-1
– unlink指向软链接,删除软链接;指向最后一个硬链接,相当于删除文件
2文件的拷贝
拷贝文件
• Linux 下并没有专门的拷贝函数和接口,需要通过open,read,
wite 等文件操作函数实现
3移动文件命令为mv,函数为rename
• man 2 rename
• int rename(const char oldpath, const char newpath)
– 参数oldpath:旧的文件路径
– 参数newpath:新的文件路径
– 返回值:成功返回0,错误返回-1
4测试代码
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <dirent.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
int main(int argv,char*argc[])
{
int fdold,fdnew,len,ret;
char rbuf[1024];
//=====================================================
//unlink
printf("first file is unlink file or content yyy\n");
if(argv<2)
{
printf("no unlink file err \n");
exit(1);
}
ret=unlink(argc[1]);
if(0==ret)
{
printf("no unlink file %s success \n",argc[1]);
}else
{
printf(" unlink file %s fail %d \n",argc[1],ret);
exit(1);
}
//==============================================================
//===============================================================
//file move
printf("second file is need move file or content\n");
if(argv<3)
{
printf("no move file err \n");
exit(1);
}
if((fdold=open(argc[2],O_RDWR))<0)
{
printf("open old file %s err \n",argc[2]);
}
if((fdnew=open(argc[3],O_RDWR|O_CREAT,0777))<0)
{
printf("open new file %s err \n",argc[3]);
}
while(1)
{
len=read(fdold,rbuf,1024);
if(len)
write(fdnew,rbuf,len);
else
break;
}
close(fdold);
close(fdnew);
//=========================================================================
//========================================================================
//chgname
printf("third file is ch name file or content\n");
if(argv<4)
{
printf("no chgnaem file err \n");
exit(1);
}
if(rename(argc[4], argc[5])<0)
{
printf("no chg name file err \n");
exit(1);
}
printf("no chg name file success \n");
//======================================================================
return 0;
}
网友评论