gpt4 book ai didi

c - 如何使用 stat() 确定文件是否为符号链接(symbolic link)?

转载 作者:太空狗 更新时间:2023-10-29 16:33:48 24 4
gpt4 key购买 nike

我基本上必须为一个类编写一个 UNIX ls 命令的克隆,而且我几乎已经完成了所有工作。我似乎无法弄清楚该怎么做的一件事是检查文件是否是符号链接(symbolic link)。来自man stat() 页面,我看到定义了一个 mode_t 值,S_IFLNK

这就是我尝试检查文件是否为符号链接(symbolic link)的方式,但没有成功(注意,stbuf 是 stat() 将 inode 数据返回到的缓冲区):

switch(stbuf.st_mode & S_IFMT){
case S_IFLNK:
printf("this is a link\n");
break;
case S_IFREG:
printf("this is not a link\n");
break;
}

我的代码总是打印 this is not a link 即使它是,而且我知道一个事实,该文件是一个符号链接(symbolic link),因为实际的 ls 命令是这样说的,而且我创建了符号链接(symbolic link)...

任何人都可以发现我可能做错了什么吗?感谢您的帮助!

最佳答案

你不能。

您需要使用 <a href="http://linux.die.net/man/2/stat" rel="noreferrer noopener nofollow">lstat()</a>统计链接本身,普通 stat()将跟随链接,因此永远不会“看到”链接本身。

关于c - 如何使用 stat() 确定文件是否为符号链接(symbolic link)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2635923/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com