lstat没有检测到符号链接

时间:2016-06-19 11:28:37

标签: c

我试图检查文件是否是符号链接,我的测试似乎不起作用。如何检查符号链接?

if (lstat(file->full_path, &file_info) == 0)
    printf((file_info.st_mode & S_IFDIR)  ? "l" : "");
else
    printf((S_ISDIR(file_info.st_mode))  ? "d" : "-");

1 个答案:

答案 0 :(得分:1)

如果定义了S_ISLNK:

S_ISLNK(file_info.st_mode) 

否则

if ((file_info.st_mode & S_IFMT) == S_IFLNK)

所以在你的例子中:

if (lstat(file->full_path, &file_info) == 0)
   printf(((file_info.st_mode & S_IFMT) == S_IFLNK)  ? "l" : "");
else
   printf("Could not get file stat info\n");

请注意,如果lstat不返回0,则它在file_info结构中不会有任何有效信息。