确定unix系统上的符号链接

时间:2013-02-19 18:55:30

标签: c

我正在尝试使用函数S_ISLNK(file.st_mode)来检查某个文件是否是符号链接而不是目录或常规文件。但是,当我使用符号链接文件检查它时它似乎不起作用。

这是我的代码:

            if(S_ISDIR(fileStat.st_mode))
            {
                // DIR - display files in the directory
                printf("    DIR         ");
                fileType = 2;


            }else if(S_ISLNK(fileStat.st_mode)){
                // LNK - display the name of the file the link is pointing to
                printf("    LNK         ");
                fileType = 3;
            }else{
                // Display general info only
                printf("    REG         ");
                fileType = 1;
            }

对目录的检查工作正常,但是当我在符号链接文件上运行程序时,它显示为常规文件。谁知道我可能做错了什么?

1 个答案:

答案 0 :(得分:3)

stat统计链接的目标。如果要判断文件是否为符号链接,请使用lstat

  

lstat()stat()相同,但如果路径是符号链接,则链接本身将被统计,而不是它所引用的文件。