link函数失败,错在哪呢?

炼气士 2012-08-13 07:55:33

#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>

int main(int argc, char *argv[])
{
int ret_code;
if(argc != 1)
{
printf("sorry input error \n");
exit(1);
}
printf("%d\n", errno);
ret_code = link("t1.txt", "t2.txt");
if(ret_code)
{
printf("link file error\n");
}

printf("%d\n", errno);

exit(0);
}


执行结果是:
0
link file error
1
...全文
274 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wzw12315 2012-08-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
那应该是权限问题了。


引用 3 楼 的回复:

确定目录下面没有t2.txt,link的第二个参数,newpath,我随便用个新名字都失败的。
[/Quote]
目录下要有t1.txt文件,另外的话,运行程序后会生成t2.txt文件的,
如果你再次运行程序的话,应该会出错的。这可能与链接有关 因为链接有软链接 和硬链接之分
炼气士 2012-08-14
  • 打赏
  • 举报
回复
打印出来后,显示operating not permmited!
我目前是root用户,ll显示权限全开的;网上搜了一下,有一种说法是存在隐藏属性,
用lsattr命令查看,但我这边查看后显示错误,提示“对设备不适当的ioctl操作while reading flags on”;再搜提示是lsattr支持ext2,ext3,我的是vm虚拟机的linux,suse,是不是就不行?
图灵狗 2012-08-13
  • 打赏
  • 举报
回复
那应该是权限问题了。

[Quote=引用 3 楼 的回复:]

确定目录下面没有t2.txt,link的第二个参数,newpath,我随便用个新名字都失败的。
[/Quote]
wqkjj 2012-08-13
  • 打赏
  • 举报
回复
if(ret_code)
{
printf("link file error[%d][%s]\n", errno, strerror(errno));
}

看看是什么原因吧
估计是用户对目录没有写权限。
炼气士 2012-08-13
  • 打赏
  • 举报
回复
确定目录下面没有t2.txt,link的第二个参数,newpath,我随便用个新名字都失败的。
图灵狗 2012-08-13
  • 打赏
  • 举报
回复
应该是你的2.txt已经存在,所以它不会再去建立链接,把2.txt删除就会成功的。
pengzhixi 2012-08-13
  • 打赏
  • 举报
回复
你看看t2.txt是否已经存在了

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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