La stat() appel système prend une chaîne de nom de fichier et retourne la structure suivante:
struct stat {
dev_t st_dev; /* ID of device containing file */
ino_t st_ino; /* inode number */
mode_t st_mode; /* protection */
nlink_t st_nlink; /* number of hard links */
uid_t st_uid; /* user ID of owner */
gid_t st_gid; /* group ID of owner */
dev_t st_rdev; /* device ID (if special file) */
off_t st_size; /* total size, in bytes */
blksize_t st_blksize; /* blocksize for filesystem I/O */
blkcnt_t st_blocks; /* number of blocks allocated */
time_t st_atime; /* time of last access */
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last status change */
};
Cela fonctionne aussi bien sur les entrées du répertoire ainsi que les fichiers et le st_mode
est le domaine spécifique que vous cherchez .
Le fichier d'en-tête <sys/stat.h>
doit contenir cette structure et toutes les définitions ainsi que #defines
macros et/ou de décodage de manière intelligente les champs (voir here pour un échantillon).
Si vous êtes intéressé par la façon dont c'est vraiment fait, vous pouvez regarder le code source ls
dans GNU coreutils. Mais utilisez seulement cela pour vous éduquer. C'est la GPL, donc vous ne pouvez pas l'attraper à vos propres fins et, si c'est un devoir, votre éducateur vous manquera certainement si vous lui donnez quelque chose qui ressemble trop à ceci.
salut, pouvez-vous me donner un exemple de programme 'c' pour faire la commande 'ls -l'? Merci –
Non, parce que vous n'avez même pas * essayé * de le faire vous-même. Je suis ici pour aider les gens à apprendre, ne pas faire leur travail pour eux. – paxdiablo