Date derniere modif unix
Fermé
hello^^
-
13 févr. 2010 à 22:12
dubcek Messages postés 18767 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 5 mars 2025 - 16 févr. 2010 à 14:37
dubcek Messages postés 18767 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 5 mars 2025 - 16 févr. 2010 à 14:37
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
- Trier par date excel - Guide
- Airpods 3 date de sortie - Guide
7 réponses
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
14 févr. 2010 à 08:46
14 févr. 2010 à 08:46
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--
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
14 févr. 2010 à 16:03
14 févr. 2010 à 16:03
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
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
15 févr. 2010 à 08:48
15 févr. 2010 à 08:48
que veux tu afficher ?
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
15 févr. 2010 à 09:31
15 févr. 2010 à 09:31
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
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
16 févr. 2010 à 13:46
16 févr. 2010 à 13:46
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;
}
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
16 févr. 2010 à 14:20
16 févr. 2010 à 14:20
cette ligne là ?
$ ls -l
total 140
...
je crois que c'est une somme des blocks, il faut la calculer, elle n'est pas dans stat
$ ls -l
total 140
...
je crois que c'est une somme des blocks, il faut la calculer, elle n'est pas dans stat
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
16 févr. 2010 à 14:37
16 févr. 2010 à 14:37
je pense qu'il faut faire la somme de toutes les tailles des fichiers en octets et diviser par 1024
14 févr. 2010 à 13:36
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?!
14 févr. 2010 à 14:49