【问题标题】:lstat doesn't detect symbolic linklstat 未检测到符号链接
【发布时间】:2016-06-19 11:28:36
【问题描述】:

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

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" : "-");

【问题讨论】:

    标签: c


    【解决方案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 结构中不会有任何有效信息。

    【讨论】:

      猜你喜欢
      • 2012-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-08
      相关资源
      最近更新 更多