Heure posix

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. Contributeur
    Salut astrocurieux,

    man 2 stat
    devrait d'éclairer.

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

    Dal
    0
    1. 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. Contributeur
      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. 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. Contributeur
      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