文件和目录之函数rename和renameat

重命名函数rename和renameat

#include<stdio.h>
int rename(const char *oldname, const char *newname);
int renameat(int oldfd, const char *oldname, int newfd, const char *newname);
两个函数的返回值:若成功, 返回 0; 若出错, 返回 -1。

上面两个函数分为五种情形:

oldname是普通文件非目录,若newname已经存在且非目录时, 则先将newname文件删除再将oldname重命名为newname

void test_file()                                                                
{                                                                               
     if(rename("oldfile","newfile") < 0)                                         
         err_sys("rename failed");                                               
     printf("rename success!\n");
} 

结果图如下:

由上图可知原本存在的newfile文件被删除,再重命名oldfile为newfile文件的。

如若oldname指的是一个目录,且newname是目录并已存在,则会先将已存在的newname目录删除后再将oldname目录重命名为newname

void test_directory()                                                           
{                                                                               
     if(rename("olddir", "newdir") < 0)                                          
         err_sys("rename failed");                                               
     printf("rename success!\n");
}  

结果图如下:

由上图可知,newdir已存在,当执行之后newdir先被删除再重命名olddir为newdir。

如若oldnamenewname为引用符号链接,则处理符号链接本身并非它所引用的文件

void test_symbollink()                                                          
{                                                                               
     if(rename("oldfilep", "newfilep") < 0)                                      
        err_sys("rename failed");                                               
     printf("rename success!\n");
} 

结果图如下:

由上图可知oldfilep符号链接被重命名为newfilep。

不能对...重命名

如果oldnamenewname引用同一文件,则函数不做任何更改而成功返回

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值