在Linux上执行rename失败

langyoutianxia 2010-04-16 04:44:26
在Linux上执行rename函数失败,返回的错误码errno是2,这是由于什么原因导致的错误啊,是在RedHat的机器上
...全文
1030 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
langyoutianxia 2010-04-19
  • 打赏
  • 举报
回复
2就是指errno啊
ForestDB 2010-04-18
  • 打赏
  • 举报
回复
man 2 rename可以得知该函数可能会有许多ERRORS,
/usr/include/asm/errno.h中可以得知
#define ENOENT 2 /* No such file or directory */
man中的解释是ENOENT A directory component in oldpath or newpath does not exist or is a dangling symbolic link.

如果perror不能用的话,也可以这样:

# include <stdio.h>
# include <string.h>
// # include <errno.h> // for sys_errlist

int main()
{
// printf("%s\n", sys_errlist[2]); // deprecated
printf("%s\n", strerror(2));

return 0;
}

都可以打出No such file or directory

但是通过man,rename只会返回0或者-1(失败),errno会设置,不知你的2是不是指errno。
勇敢的搬砖人 2010-04-18
  • 打赏
  • 举报
回复
友情帮顶
勇敢的搬砖人 2010-04-18
  • 打赏
  • 举报
回复
友情帮顶
langyoutianxia 2010-04-16
  • 打赏
  • 举报
回复
路径应该没有错误啊,因为对于一些比较小的文件能够成功,但是对于超过200的文件就出问题了,不能move成功
langyoutianxia 2010-04-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 rendao0563 的回复:]
系统找不到指定的文件。 路径传入错误。
[/Quote]你在哪看到的啊
rendao0563 2010-04-16
  • 打赏
  • 举报
回复
系统找不到指定的文件。 路径传入错误。
「已注销」 2010-04-16
  • 打赏
  • 举报
回复
3L正解,我也从来没使用过rename
herman~~ 2010-04-16
  • 打赏
  • 举报
回复
帮up
langyoutianxia 2010-04-16
  • 打赏
  • 举报
回复
但是mv编写在代码中不能跨平台运行
honemay 2010-04-16
  • 打赏
  • 举报
回复
我都不用rename
我都是用 mv testsrc.txt testdes.txe
langyoutianxia 2010-04-16
  • 打赏
  • 举报
回复
因为是部署到现网的程序不能随便改代码,要是能查到错误号代表什么意思最好了,但是我在网上找了半天都没有找到有关rename函数返回错误码的信息。
wukong000 2010-04-16
  • 打赏
  • 举报
回复
用perror试试、、看看输出的错误字符串是什么就清楚了、、

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧