Type de fichier

 

Sous Unix, tout est fichier, mais il est possible de déterminer plus exactement le type d'un fichier. (Voir informations sur le fichier)

Pour obtenir une information sur le type de fichier, il faut utiliser le masque S_IFMT sur st_mode (un simple 'et logique'). Cela aura pour effet d'effacer les attributs supllémentaires n'indiquant pas le type de fichier. La valeur du résultat donnera donc:

S_IFDIR s'il s'agit d'un directory
S_IFCHR périphérique mode caractère
S_IFBLK périphérique mode block
S_IFREG fichier normal
S_IFLNK fichier lien symbolique
S_IFSOCK socket
S_IFIFO pipe nommé

Macros

Pour récupérer directement le type de fichier, il existe dans la même librairie des macros qui permettent à partir de st_mode de donner le type de fichier qui sont :

S_ISDIR(m) directory
S_ISCHR(m) périphérique mode caractère
S_ISBLK(m) périphérique mode block
S_ISREG(m) fichier normal
S_IFLNK(m) fichier lien symbolique
S_ISSOCK(m) socket
S_ISFIFO(m) pipe nommé

où la variable m représente la valeur contenue dans st_mode .