2016-11-13 67 views
3

我正在处理在linux中使用C posix的符号链接。如何区分常规文件和符号链接?

我检测到一个文件,我必须区分常规文件和符号链接。

现在我做了下:

if(S_ISREG(direct_info.st_mode)) { 
    // deal with regular file 
} 
else if(S_ISLNK(direct_info.st_mode)) { 
    // deal with symbolic link 
} 

的问题是,当该文件是一个符号链接的执行流程,在第一,如果进入。也就是说,什么时候符号链接也会在S_ISREG条件下输入。那么,我能做些什么来区分两者呢?

+6

检查它是否是第一个链接。 – dbush

+0

你是如何获得'direct_info'的? – duskwuff

回答

2

您可能正在使用stat()来获取文件模式。 stat()实际上返回有关目标的信息,而不是链接本身。 因此,为了获取有关链接本身的信息,您需要使用lstat()