Heure posix

Fermé
Utilisateur anonyme - Modifié par irongege le 2/07/2015 à 21:00
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 2 juil. 2015 à 20:58
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 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 2/07/2015 à 14:47
Salut astrocurieux,

man 2 stat
devrait d'éclairer.

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

Dal
0
Utilisateur anonyme
2 juil. 2015 à 15:54
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 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 2/07/2015 à 17:28
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
2 juil. 2015 à 17:59
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 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 2/07/2015 à 20:59
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