Heure posix

Utilisateur anonyme -  
[Dal] Messages postés 6205 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

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

man 2 stat
devrait d'éclairer.

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

Dal
0
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
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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
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
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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