IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

lstat et struct stat


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 36
    Points : 23
    Points
    23
    Par défaut lstat et struct stat
    Bonjour, j'ai un problème que je n'arrive pas a comprendre.

    Je suis entrain de coder ls. Pour l'option -t, j'ai un problème. Je récupère bien le nombre de seconde dans la structure retournée de lstat avec stat.st_mtime. Je peux donc trier par temps depuis la dernière modification.

    Mon problème est quand 2 fichiers dossiers, ou autre choses ont le même nombre de secondes écoulées depuis janvier 1970.
    Je sais que je dois utiliser "stat.st_mtimespec.tv_nsec" dans la structure retournée par lstat.
    Mon problème c'est que ca valeur est toujours = a 0 .
    En regardant sur google, je pense avoir compris que je dois déclarer de define suivant :

    "_POSIX_SOURCE"

    Avec ou sans le résultat est le même .

    Pouvez-vous m'aider a résoudre ce problème svp?

    Merci

  2. #2
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Man lstat, notes :
    Glibc exposes the nanosecond component of each field using names of the form st_atim.tv_nsec if the _BSD_SOURCE or _SVID_SOURCE feature test macro is defined. These fields are specified in POSIX.1-2008, and, starting with version 2.12, glibc also exposes these field names if _POSIX_C_SOURCE is defined with the value 200809L or greater, or _XOPEN_SOURCE is defined with the value 700 or greater. If none of the aforementioned macros are defined, then the nanosecond values are exposed with names of the form st_atimensec. On file systems that do not support subsecond timestamps, the nanosecond fields are returned with the value 0.
    1. As-tu défini la valeur adéquate pour _POSIX_C_SOURCE ?
    2. Quel est le système de fichier avec lequel tu testes ton programme ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 36
    Points : 23
    Points
    23
    Par défaut
    Salut Matt_houston,

    je n'ai défini aucune valeur au define _POSIX_C_SOURCE. Je ne sais pas quoi lui donner
    voici ma structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    typedef struct				s_info
    {
    	unsigned long			flags;
    	char					*name;
    	char					acl;
    	int						*min;
    	int						*maj;
    	size_t					len_min;
    	size_t					len_maj;
    	size_t					len_name;
    	char					*usr;
    	size_t					len_user;
    	char					*grp;
    	gid_t					gid;
    	size_t					len_gid;
    	size_t					len_grp;
    	off_t					size;
    	size_t					len_size;
    	char					*name_l;
    	size_t					len_name_l;
    	char					date[13];
    	mode_t					type;
    	mode_t					mode;
    	nlink_t					nlink;
    	size_t					len_link;
    	time_t                               time;
    	time_t					ntime;
    	struct s_info			*next;
    }							t_info;
    voici ma ligne ou je sauvegarde les infos du temps

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	(*new)->time = stat->st_mtime;
    	(*new)->ntime = stat->st_mtimespec.tv_nsec;

Discussions similaires

  1. struct stat et st_size sous unix
    Par Discovery dans le forum C
    Réponses: 7
    Dernier message: 08/03/2009, 18h56
  2. Unrecognized option -fnative-struct
    Par copyallright dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 01/05/2003, 12h25
  3. Réponses: 2
    Dernier message: 01/04/2003, 22h09
  4. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo