Date derniere modif unix
hello^^
-
dubcek Messages postés 19033 Date d'inscription Statut Contributeur Dernière intervention -
dubcek Messages postés 19033 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
est ce que qqun conner le code qui permet de connaitre la derniere date de modif d'un fichier en c sous unix
svp sa fait une heure que je cherche et j'ai tjs pas trouvé....apart stat mais sa maffiche pas le bon resultat^^
merci
est ce que qqun conner le code qui permet de connaitre la derniere date de modif d'un fichier en c sous unix
svp sa fait une heure que je cherche et j'ai tjs pas trouvé....apart stat mais sa maffiche pas le bon resultat^^
merci
A voir également:
- Date derniere modif unix
- Dernière version ccleaner gratuit français - Télécharger - Nettoyage
- Supprimer dernière page word - Guide
- Dernière version chrome - Accueil - Applications & Logiciels
- Mode avion whatsapp dernière connexion - Guide
- Trouver une date de naissance gratuit - Forum Webmastering
7 réponses
hello
c'est bien stat, montre nous ton code
struct stat {
dev_t st_dev; /* ID of device containing file */
ino_t st_ino; /* inode number */
mode_t st_mode; /* protection */
nlink_t st_nlink; /* number of hard links */
uid_t st_uid; /* user ID of owner */
gid_t st_gid; /* group ID of owner */
dev_t st_rdev; /* device ID (if special file) */
off_t st_size; /* total size, in bytes */
blksize_t st_blksize; /* blocksize for file system I/O */
blkcnt_t st_blocks; /* number of 512B blocks allocated */
time_t st_atime; /* time of last access */
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last status change */
};
--More--
c'est bien stat, montre nous ton code
struct stat {
dev_t st_dev; /* ID of device containing file */
ino_t st_ino; /* inode number */
mode_t st_mode; /* protection */
nlink_t st_nlink; /* number of hard links */
uid_t st_uid; /* user ID of owner */
gid_t st_gid; /* group ID of owner */
dev_t st_rdev; /* device ID (if special file) */
off_t st_size; /* total size, in bytes */
blksize_t st_blksize; /* blocksize for file system I/O */
blkcnt_t st_blocks; /* number of 512B blocks allocated */
time_t st_atime; /* time of last access */
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last status change */
};
--More--
essaye
#include <sys/types.h>
#include <dirent.h>
#include <stdio.h>
#include <sys/stat.h>
#include <unistd.h>
#include <time.h>
main()
{
DIR * dirp;
struct dirent *dirent;
struct stat fstat;
struct tm *ts;
char buf[100];
dirp=opendir(".");
while(dirent=readdir(dirp))
{
stat(dirent->d_name, &fstat);
ts = localtime(&fstat.st_mtime);
strftime(buf, sizeof(buf), "%b %d %H:%M", ts);
printf("%s %s\n", buf, dirent->d_name);
}
}
merci beaucoup sa fonctionne, j'ai un autre souci cette fois c'est d'afficher les permissions!
int main()
{
struct stat privilege;
struct dirent *lecture;
DIR *rep;
int filesize,liens;
char user[3];
char group[3];
char other[3];
rep = opendir(".");
while ((lecture = readdir(rep)))
{
if(lecture->d_name[0] != '.')
{
stat(lecture->d_name,&privilege);
/* Droits pour l'utilisateur :*/
user[0]=(mode & S_IRUSR) ? printf("r") : printf("-");
user[1]=(mode & S_IWUSR) ? printf("w") : printf("-");
user[2]=(mode & S_IXUSR) ? printf("x") : printf("-");
/* Droits pour le groupe :*/
group[0]=(mode & S_IRGRP) ? printf("r") : printf("-");
group[1]=(mode & S_IWGRP) ? printf("w") : printf("-");
group[2]=(mode & S_IXGRP) ? printf("x") : printf("-");
/* Droits pour les autres :*/
other[0]=(mode & S_IROTH) ? printf("r") : printf("-");
other[1]=(mode & S_IWOTH) ? printf("w") : printf("-");
other[2]=(mode & S_IXOTH) ? printf("x") : printf("-");
printf(" %s %s %s %s \n",lecture->d_name,user,group,other);
}
}
return 0;
}
quand je fais sa il me sort : --x-w---- TP2
--x-w---- TP1
c'est quoi qui va pas?
merci
int main()
{
struct stat privilege;
struct dirent *lecture;
DIR *rep;
int filesize,liens;
char user[3];
char group[3];
char other[3];
rep = opendir(".");
while ((lecture = readdir(rep)))
{
if(lecture->d_name[0] != '.')
{
stat(lecture->d_name,&privilege);
/* Droits pour l'utilisateur :*/
user[0]=(mode & S_IRUSR) ? printf("r") : printf("-");
user[1]=(mode & S_IWUSR) ? printf("w") : printf("-");
user[2]=(mode & S_IXUSR) ? printf("x") : printf("-");
/* Droits pour le groupe :*/
group[0]=(mode & S_IRGRP) ? printf("r") : printf("-");
group[1]=(mode & S_IWGRP) ? printf("w") : printf("-");
group[2]=(mode & S_IXGRP) ? printf("x") : printf("-");
/* Droits pour les autres :*/
other[0]=(mode & S_IROTH) ? printf("r") : printf("-");
other[1]=(mode & S_IWOTH) ? printf("w") : printf("-");
other[2]=(mode & S_IXOTH) ? printf("x") : printf("-");
printf(" %s %s %s %s \n",lecture->d_name,user,group,other);
}
}
return 0;
}
quand je fais sa il me sort : --x-w---- TP2
--x-w---- TP1
c'est quoi qui va pas?
merci
user,group,other sont des tableaux, tu dois imprimer chaque élement, avec [], mais les droits ont déjà été imprimés
#include <sys/types.h>
#include <dirent.h>
#include <stdio.h>
#include <sys/stat.h>
#include <unistd.h>
main()
{
DIR * dirp;
struct dirent *dirent;
struct stat fstat;
struct tm *ts;
char buf[100];
dirp=opendir(".");
while(dirent=readdir(dirp))
{
stat(dirent->d_name, &fstat);
(fstat.st_mode & S_IRUSR) ? printf("r") : printf("-");
(fstat.st_mode & S_IWUSR) ? printf("w") : printf("-");
(fstat.st_mode & S_IXUSR) ? printf("x") : printf("-");
(fstat.st_mode & S_IRGRP) ? printf("r") : printf("-");
(fstat.st_mode & S_IWGRP) ? printf("w") : printf("-");
(fstat.st_mode & S_IXGRP) ? printf("x") : printf("-");
(fstat.st_mode & S_IROTH) ? printf("r") : printf("-");
(fstat.st_mode & S_IWOTH) ? printf("w") : printf("-");
(fstat.st_mode & S_IXOTH) ? printf("x") : printf("-");
printf(" %s\n", dirent->d_name);
}
}
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
User,group,other sont des tableaux, tu dois imprimer chaque élement, avec []
je me suis mal exprimé.
dans ton cas, tu devrais faire:
char user[4];
char group[4];
char other[4];
...
/* Droits pour l'utilisateur :*/
(mode & S_IRUSR) ? user[0]='r' : user[0]='-';
(mode & S_IWUSR) ? user[1]='w' : user[1]='-';
(mode & S_IXUSR) ? user[2]='x' : user[2]='-';
user[3]='\0';
...
printf(" %s %s %s %s \n",lecture->d_name,user,group,other);
je me suis mal exprimé.
dans ton cas, tu devrais faire:
char user[4];
char group[4];
char other[4];
...
/* Droits pour l'utilisateur :*/
(mode & S_IRUSR) ? user[0]='r' : user[0]='-';
(mode & S_IWUSR) ? user[1]='w' : user[1]='-';
(mode & S_IXUSR) ? user[2]='x' : user[2]='-';
user[3]='\0';
...
printf(" %s %s %s %s \n",lecture->d_name,user,group,other);
bonjour,
c'est bon merci, par contre j'ai un autre souci, jessaye de recuperer la taille qu'il y a ds ls -l a la 1ere ligne et sa maffiche pas un bon chiffre j'ai fait :
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <dirent.h>
#include <pwd.h>
#include <grp.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
struct stat total;
struct dirent *lecture;
DIR* rep;
int letotal;
char x[10]=".";
rep = opendir(".");
stat(x,&total);
letotal=(total.st_blocks);
printf("total %d\n",letotal);
while ((lecture = readdir(rep)))
{
if(lecture->d_name[0] != '.')
{
printf("%s\n",lecture->d_name);
}
}
return 0;
}
c'est bon merci, par contre j'ai un autre souci, jessaye de recuperer la taille qu'il y a ds ls -l a la 1ere ligne et sa maffiche pas un bon chiffre j'ai fait :
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <dirent.h>
#include <pwd.h>
#include <grp.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
struct stat total;
struct dirent *lecture;
DIR* rep;
int letotal;
char x[10]=".";
rep = opendir(".");
stat(x,&total);
letotal=(total.st_blocks);
printf("total %d\n",letotal);
while ((lecture = readdir(rep)))
{
if(lecture->d_name[0] != '.')
{
printf("%s\n",lecture->d_name);
}
}
return 0;
}
int main()
{
struct stat date;
struct dirent *lecture;
// Declaration des variables
DIR *rep;
char ladate[20];
rep = opendir(".");
while ((lecture = readdir(rep)))
{
if(lecture->d_name[0] != '.')
{
*ladate=date.st_mtime;
printf(" %s %s \n",lecture->d_name,ladate);
}
}
return 0;
}
et sa maffiche sa : TP2 ▒
TP1 ▒
je comprends pas trop pourquoi?!