Bonjour,
Je voudrais savoir comment connaitre la longueur des gros fichiers ( >4Go)
car par stat j'ai:
struct stat {
dev_t st_dev; /* device */
ino_t st_ino; /* inode */
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 type (if inode device) */
off_t st_size; /* total size, in bytes */
blksize_t st_blksize; /* blocksize for filesystem I/O */
blkcnt_t st_blocks; /* number of 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 change */
};
la longueur du fichier est donnée par off_t ( unsigned long donc limité à
4Go)
et je ne vois pas comment utiliser blksize_t et blkcnt_t
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Stephane Chazelas
On Mon, 30 Jan 2006 17:33:27 +0100, kakrocq wrote:
Bonjour, Je voudrais savoir comment connaitre la longueur des gros fichiers ( >4Go) car par stat j'ai: struct stat { dev_t st_dev; /* device */ ino_t st_ino; /* inode */ 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 type (if inode device) */ off_t st_size; /* total size, in bytes */ blksize_t st_blksize; /* blocksize for filesystem I/O */ blkcnt_t st_blocks; /* number of 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 change */ }; la longueur du fichier est donnée par off_t ( unsigned long donc limité à 4Go) et je ne vois pas comment utiliser blksize_t et blkcnt_t [...]
Utilise stat64 (qui utilise off64_t). blkcnt_t et blkcnt_t sont pour l'utilisation disque, pas pour la taille (le nombre d'octets qu'on peut trouver dedans).
-- Stephane
On Mon, 30 Jan 2006 17:33:27 +0100, kakrocq wrote:
Bonjour,
Je voudrais savoir comment connaitre la longueur des gros fichiers ( >4Go)
car par stat j'ai:
struct stat {
dev_t st_dev; /* device */
ino_t st_ino; /* inode */
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 type (if inode device) */
off_t st_size; /* total size, in bytes */
blksize_t st_blksize; /* blocksize for filesystem I/O */
blkcnt_t st_blocks; /* number of 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 change */
};
la longueur du fichier est donnée par off_t ( unsigned long donc limité à
4Go)
et je ne vois pas comment utiliser blksize_t et blkcnt_t
[...]
Utilise stat64 (qui utilise off64_t). blkcnt_t et blkcnt_t sont
pour l'utilisation disque, pas pour la taille (le nombre
d'octets qu'on peut trouver dedans).
On Mon, 30 Jan 2006 17:33:27 +0100, kakrocq wrote:
Bonjour, Je voudrais savoir comment connaitre la longueur des gros fichiers ( >4Go) car par stat j'ai: struct stat { dev_t st_dev; /* device */ ino_t st_ino; /* inode */ 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 type (if inode device) */ off_t st_size; /* total size, in bytes */ blksize_t st_blksize; /* blocksize for filesystem I/O */ blkcnt_t st_blocks; /* number of 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 change */ }; la longueur du fichier est donnée par off_t ( unsigned long donc limité à 4Go) et je ne vois pas comment utiliser blksize_t et blkcnt_t [...]
Utilise stat64 (qui utilise off64_t). blkcnt_t et blkcnt_t sont pour l'utilisation disque, pas pour la taille (le nombre d'octets qu'on peut trouver dedans).
-- Stephane
Nicolas George
Stephane Chazelas wrote in message :
Utilise stat64 (qui utilise off64_t).
Ces fonctions ne sont pas standard. La méthode correcte pour avoir des offsets 64 bits, est de le spécifier sous forme d'options de compilation. La méthode est indiquée dans la spécification de la commande c99 : sur un système conforme, on obtient les options avec getconf, sur les variables :
selon si on est sur une architecture 32 bits ou plus. Sous GNU/Linux, ça donne -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITSd.
Sur un système moins conforme, on fouillera les includes de la libc pour deviner ce qu'il faut mettre.
Stephane Chazelas wrote in message
<slrndtsgi3.nne.stephane_chazelas@duey.spider.com>:
Utilise stat64 (qui utilise off64_t).
Ces fonctions ne sont pas standard. La méthode correcte pour avoir des
offsets 64 bits, est de le spécifier sous forme d'options de compilation. La
méthode est indiquée dans la spécification de la commande c99 : sur un
système conforme, on obtient les options avec getconf, sur les variables :
Ces fonctions ne sont pas standard. La méthode correcte pour avoir des offsets 64 bits, est de le spécifier sous forme d'options de compilation. La méthode est indiquée dans la spécification de la commande c99 : sur un système conforme, on obtient les options avec getconf, sur les variables :