Wie bestimmen Sie, mit stat() ob eine Datei ein symbolischer link ist?

Ich im Grunde zu schreiben, ein Klon des UNIX-Befehls ls in eine Klasse, und ich habe fast alles funktioniert. Eine Sache, die ich kann nicht scheinen, um herauszufinden, wie zu tun ist zu überprüfen, ob eine Datei ein symbolischer link ist, oder nicht. Aus der man Seite für stat() ich sehe, dass es eine mode_t Wert definiert, S_IFLNK.

Dies ist, wie ich versuche, um zu überprüfen, ob eine Datei ein sym-link, mit der kein Glück (beachten Sie, stbuf ist der Puffer, der stat() kehrte die inode-Daten in):

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;
}

Mein code IMMER drucken this is not a link auch wenn es ist, und ich weiß, für eine Tatsache, dass die genannte Datei ein symbolischer link ist, da die tatsächliche ls-Befehl sagt ja, plus ich habe die sym-link...

Kann jeder spot, was ich möglicherweise falsch mache? Vielen Dank für die Hilfe!

InformationsquelleAutor der Frage hora | 2010-04-14

Schreibe einen Kommentar