À L'Aide Struct Stat()

Je suis à essayer de comprendre exactement comment utiliser stat() pour capturer des informations sur un fichier. Ce dont j'ai besoin c'est d'être capable d'imprimer plusieurs champs d'informations sur un fichier. Donc..

 #include <iostream>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
 using namespace std;

 int main() {
     struct stat buf;
     stat("file",&buf);
               ...
     cout << st_dev << endl;
     cout << st_ino << endl;
     cout << st_mode << endl;
     cout << st_nlink << endl;
     cout << st_uid << endl;
     cout << st_gid << endl;
     cout << st_rdev << endl;
     cout << st_size << endl;
     cout << st_blksize << endl;
     cout << st_blocks << endl;
     cout << st_atime << endl;
     cout << st_mtime << endl;
     cout << st_ctime << endl;
     ...
 }

Je suis complètement confus sur la façon de le faire. Pourquoi est - &buf un paramètre stat? Je ne se soucient pas de stocker ces informations dans la mémoire, j'ai juste besoin de sortir les champs dans mon programme en c++. Comment puis-je accéder à l'information contenue dans la structure? Est buf en fait censé contenir les informations renvoyées de stat()?

Je vois, merci à tous pour les réponses. Ils ont été très utiles. Personne ne sait comment à l'aide de stdin, stdout ou stderr en tant que paramètres de stat œuvres? Ces sont des cours d'eau et non pas des fichiers alors, comment pouvez-stat remplir une structure de données?
Utilisation fstat, qui prend un descripteur de fichier en tant que premier argument au lieu d'un chemin.
Normalement, je devrais le faire, mais l'environnement est quelque peu artificielle, car c'est l'OS de la partie d'une architecture simulateur je l'ai écrit. Alors, quand un fichier est ouvert par un syscall, j'ai mon propre vecteur d'agir comme un descripteur de fichier de la table. Est-il une bonne façon de capturer le réel descripteur de fichier sur la machine pour un fichier tel qu'il est ouvert? Si c'était le cas, je voudrais utiliser fstat, car aucune traduction ne serait nécessaire entre les flux des stats et des statistiques du fichier.
Vous devez demander à ces choses comme une question distincte de sorte que plus de gens peuvent les voir et donc qu'il n'y a plus d'espace pour écrire que dans les commentaires.
Va faire. Je n'étais pas sûr si c'était une question banale ou pas.

OriginalL'auteur Dan Snyder | 2010-08-18