la valeur pointé par un FILE* est-elle intéressante?
23 réponses
Miguel
Bonjour,
Dans l'un de mes "programmes", j'écris dans un fichier toujours au même
endroit, toujours le même nombre de caractères (en utilisant
cstdio/stdio.h).
Pour ce faire, j'utilise fseek avant chaque nouvelle écriture.
J'aimerais savoir si il y a un moyen de contourner cet appel à fseek (dans
un souci de gain de temps) en utilisant par exemple la valeur pointée par
mon FILE* flux (donc en gros si *flux est une strucutre utilisable et si le
code
Bonjour, Dans l'un de mes "programmes", j'écris dans un fichier toujours au même endroit, toujours le même nombre de caractères (en utilisant cstdio/stdio.h). Pour ce faire, j'utilise fseek avant chaque nouvelle écriture. J'aimerais savoir si il y a un moyen de contourner cet appel à fseek (dans un souci de gain de temps)
Tu comptes gagner combien de millisecondes par an ?
*flux_dest = *flux_orig;
Hummm ...
Si tu as un système à peu près posixly correct, essayes 'man mmap', sinon il est toujours possible d'ouvrir un fichier en read/write, il est possible qu'il y ait des solutions sans qu'il ne soit besoin d'écrire un driver.
Miguel wrote:
Bonjour,
Dans l'un de mes "programmes", j'écris dans un fichier toujours au
même endroit, toujours le même nombre de caractères (en utilisant
cstdio/stdio.h).
Pour ce faire, j'utilise fseek avant chaque nouvelle écriture.
J'aimerais savoir si il y a un moyen de contourner cet appel à fseek
(dans un souci de gain de temps)
Tu comptes gagner combien de millisecondes par an ?
*flux_dest = *flux_orig;
Hummm ...
Si tu as un système à peu près posixly correct, essayes 'man mmap',
sinon il est toujours possible d'ouvrir un fichier en read/write, il
est possible qu'il y ait des solutions sans qu'il ne soit besoin
d'écrire un driver.
Bonjour, Dans l'un de mes "programmes", j'écris dans un fichier toujours au même endroit, toujours le même nombre de caractères (en utilisant cstdio/stdio.h). Pour ce faire, j'utilise fseek avant chaque nouvelle écriture. J'aimerais savoir si il y a un moyen de contourner cet appel à fseek (dans un souci de gain de temps)
Tu comptes gagner combien de millisecondes par an ?
*flux_dest = *flux_orig;
Hummm ...
Si tu as un système à peu près posixly correct, essayes 'man mmap', sinon il est toujours possible d'ouvrir un fichier en read/write, il est possible qu'il y ait des solutions sans qu'il ne soit besoin d'écrire un driver.
cedric
Emmanuel Delahaye wrote:
Une application vien lire un fichier déjà ouvert ? C'est risqué. Est-tu sûr que ton ecriture est terminée (fflush()) ?
Je vois bien pourquoi ce n'est pas portable, mais je ne vois pas bien en quoi c'est risqué. Tu sous-entends qu'il y a une meilleurs façon de faire communiquer les deux programmes de l'OP, mais tu ne connais pas son problème... À ce compte là, dès que ce n'est plus "Bonjour le monde" ça devient risqué ;-)
Emmanuel Delahaye wrote:
Une application vien lire un fichier déjà ouvert ? C'est risqué. Est-tu
sûr que ton ecriture est terminée (fflush()) ?
Je vois bien pourquoi ce n'est pas portable, mais je ne vois pas bien en
quoi c'est risqué. Tu sous-entends qu'il y a une meilleurs façon de
faire communiquer les deux programmes de l'OP, mais tu ne connais pas
son problème... À ce compte là, dès que ce n'est plus "Bonjour le monde"
ça devient risqué ;-)
Une application vien lire un fichier déjà ouvert ? C'est risqué. Est-tu sûr que ton ecriture est terminée (fflush()) ?
Je vois bien pourquoi ce n'est pas portable, mais je ne vois pas bien en quoi c'est risqué. Tu sous-entends qu'il y a une meilleurs façon de faire communiquer les deux programmes de l'OP, mais tu ne connais pas son problème... À ce compte là, dès que ce n'est plus "Bonjour le monde" ça devient risqué ;-)
espie
Faut voir qu'en plus toutes les infos necessaires a la gestion du fichier ne sont pas toujours juste derriere le FILE, il y a souvent un pimpl qui traine...
c'est meme precisement le cas sur, au moins, tous les BSD, ou la bibliotheque standard fait directement reference a la taille de la structure de base FILE par ci, par la, et ou rajouter des infos derriere un pointeur auxiliaire a permis d'eviter de changer d'ABI a chaque rajout...
Bref, copier des FILE, ou fabriquer les siens soi-meme, serait une fort mauvaise idee.
Faut voir qu'en plus toutes les infos necessaires a la gestion du fichier
ne sont pas toujours juste derriere le FILE, il y a souvent un pimpl qui
traine...
c'est meme precisement le cas sur, au moins, tous les BSD, ou la bibliotheque
standard fait directement reference a la taille de la structure de base FILE
par ci, par la, et ou rajouter des infos derriere un pointeur auxiliaire
a permis d'eviter de changer d'ABI a chaque rajout...
Bref, copier des FILE, ou fabriquer les siens soi-meme, serait une
fort mauvaise idee.
Faut voir qu'en plus toutes les infos necessaires a la gestion du fichier ne sont pas toujours juste derriere le FILE, il y a souvent un pimpl qui traine...
c'est meme precisement le cas sur, au moins, tous les BSD, ou la bibliotheque standard fait directement reference a la taille de la structure de base FILE par ci, par la, et ou rajouter des infos derriere un pointeur auxiliaire a permis d'eviter de changer d'ABI a chaque rajout...
Bref, copier des FILE, ou fabriquer les siens soi-meme, serait une fort mauvaise idee.