Comment déterminer si un fichier est un lien?

J'ai le code ci-dessous seule une partie de ce qui est montré ici, et je vérifie si le type de fichier.

struct stat *buf /* just to show the type buf is*/ 
switch (buf.st_mode & S_IFMT) {
case S_IFBLK:  printf(" block device\n");            break;
case S_IFCHR:  printf(" character device\n");        break;
case S_IFDIR:  printf(" directory\n");               break;
case S_IFIFO:  printf(" FIFO/pipe\n");               break;
case S_IFLNK:  printf(" symlink\n");                 break;
case S_IFREG:  printf(" regular file\n");            break;
case S_IFSOCK: printf(" socket\n");                  break;
default:       printf(" unknown?\n");                break;
}

Le problème: la valeur de st_mode obtenus lorsque je fais un printf("\nMode: %d\n",buf.st_mode); le résultat est 33188.

J'ai testé mon programme avec un type de fichier normal et d'un lien symbolique. Dans les deux cas, la sortie a été "un fichier régulier" je.e le lien symbolique cas est un échec et je n'arrive pas à comprendre pourquoi?

La question est un peu floue. Êtes-vous le test d'un lien symbolique, et le programme dit que c'est un fichier régulier? Quelle est la valeur de buf.st_mode?
édité.
Vous avez besoin lstat(). stat() suit les liens symboliques et vérifie les fichiers qu'ils pointent.

OriginalL'auteur Eternal Learner | 2010-10-21

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *