Heure posix

Utilisateur anonyme -  
[Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour les gents !!!

auriez-vous une idée pour que je puisse obtenir dans un int le nombre de seconde qui ce sont passer depuis 1970 jusqu'à la dernière modification de mon fichier concerner ?
le tout en C évidement

je voudrais cette commande stat -c %Y nomdufichier
en C ...

des idée ?
merci d'avance

1 réponse

  1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Salut astrocurieux,

    man 2 stat
    devrait d'éclairer.

    https://linux.die.net/man/2/stat

    Dal
    0
    1. Utilisateur anonyme
       
      Bonjours DAL !
      merci de ta réactivité !
      effectivement j'ai trouver lors de mes recherche que je pouvais avoir axée a la date de la dernière modificatif de mon fichier via stat grâce a
      time_t st_mtime; /* Heure dernière modification *
      mais comment l'utiliser pour qu'il me retourne un int qui vaut le nombre de seconde ou heure écouler depuis 1970 jusqu'a sa modification ?
      0
    2. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
       
      Si on lis le standard POSIX :

      https://pubs.opengroup.org/onlinepubs/009695399/functions/stat.html
      https://pubs.opengroup.org/onlinepubs/009695399/basedefs/sys/stat.h.html

      "Times shall be given in seconds since the Epoch"

      Sur un système POSIX conforme, le membre
      time_t    st_mtime
      de la struct renvoyée par stat doit être en secondes depuis Epoch.

      Ce n'est pas le cas en C standard ISO, où il est plus prudent de ne pas se reposer sur cette présomption et d'utiliser les fonctions de conversion et de computation accessibles par le <time.h> standard.

      Dal
      0
    3. Utilisateur anonyme
       
      ha ...
      bon je t'avoue que j'ai pas tout compris mais tu semble savoir comment je devrais m'y prendre et sa me plaie XD
      alors si je comprend bien je doit récupérer a l'aide de stat la date puis la convertir en forma seconde via time_t ?
      0
    4. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
       
      non, time_t est le type.

      ce que tu récupères, c'est le membre de la struc st_mtime (de type time_t donc) qui est peuplé par stat.

      sur la base du code d'exemple de la page de manuel, tu fais cela et c'est tout :

      #include <sys/stat.h>                                                                                                                                                                                              
      #include <stdio.h>
      #include <stdlib.h>
      
      int main(int argc, char *argv[])
      {
          struct stat sb;
      
          if (argc != 2) {
              fprintf(stderr, "Usage: %s <pathname>\n", argv[0]);
              exit(EXIT_FAILURE);
          }
      
          if (stat(argv[1], &sb) == -1) {
              perror("stat");
              exit(EXIT_FAILURE);
          }
      
          printf("Last file modification in seconds from Epoch: %d\n", (int)sb.st_mtime);
      
          exit(EXIT_SUCCESS);
      }
      

      A ne faire, donc, que sur un système POSIX.

      Dal
      0