J'essaie de comprendre 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'information sur un fichier. Donc ..Utilisation de Struct Stat()
#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 faire cela. Pourquoi & buf un paramètre à stat? Je ne me soucie pas de stocker ces informations en mémoire, j'ai juste besoin des champs outputted dans mon programme C++. Comment accéder aux informations contenues dans la structure? Est-ce que buf est censé contenir les informations retournées par stat()?
Je vois, pour tous thankyou les réponses. Ils étaient très utiles. Est-ce que quelqu'un sait comment utiliser stdin, stdout ou stderr comme paramètres pour stat fonctionne? Ce sont des flux et non des fichiers, alors comment stat peut-il remplir une structure avec des données? –
Utilisez 'fstat', qui prend un descripteur de fichier comme premier argument au lieu d'un chemin. –
Normalement je le ferais mais l'environnement est quelque peu artificiel car c'est la partie OS d'un simulateur d'architecture que j'ai écrit. Donc, quand un fichier est ouvert par un syscall, j'ai mon propre vecteur pour agir comme une table de descripteur de fichier. Est-il un bon moyen de capturer le descripteur de fichier réel sur la machine pour un fichier tel qu'il est ouvert? Si c'était le cas, j'utiliserais fstat car aucune traduction ne serait nécessaire entre les statistiques de flux et les statistiques de fichier. –