Como você determina usando stat () se um arquivo é um link simbólico?
Basicamente, tenho que escrever um clone do comando ls do UNIX para uma classe e tenho quase tudo funcionando. Uma coisa que não consigo descobrir como fazer é verificar se um arquivo é um link simbólico ou não. Decara página parastat()
, Vejo que existe ummode_t
valor definido,S_IFLNK
.
É assim que estou tentando verificar se um arquivo é um link sym, sem sorte (observe, stbuf é o buffer questat()
retornou os dados do inode para):
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;
}
Meu código SEMPRE imprimethis is not a link
mesmo que seja, e eu sei de fato que o arquivo mencionado é um link simbólico, já que o comando ls diz isso, mais eu criei o link sym ...
Alguém pode identificar o que posso estar fazendo de errado? Obrigado pela ajuda!