Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1839 connectés 

  FORUM HardWare.fr
  Programmation
  C

  problème mmap avec un deamon [résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème mmap avec un deamon [résolu]

n°1510824
nORKy
Grmmph...
Posté le 05-02-2007 à 11:00:02  profilanswer
 

voici un code qui map un fichier en mémoire :

Code :
  1. char *do_redirect(void)
  2. {
  3.   static char *buff = NULL;
  4.   char  *s;
  5.  
  6.   if (buff == NULL) {
  7.     int fd;
  8.     struct stat stat;
  9.   syslog(LOG_INFO, "Reading redirect.html..." );
  10.     fd = open("./redirect.html", O_RDONLY);
  11.     fstat(fd, &stat);
  12.     syslog(LOG_INFO, "mapping redirect.html..." );
  13.     buff = mmap(0, stat.st_size, PROT_READ, MAP_SHARED, fd, 0);
  14.     syslog(LOG_INFO, "closing..." );
  15.     close(fd);
  16.   }
  17.   syslog(LOG_INFO, "Sending redirect.html..." );
  18.   s = strdup(buff);
  19.   syslog(LOG_INFO, "dupping..." );
  20.   return (s);
  21. }


 
Ce code est dans une application qui se met en deamon (avec la fonction deamon).
Lorsque l'application N'EST PAS en deamon, aucun problème.
Par contre, si je la mets en deamon, mon application à l'air de s'arrete au niveau de mon strdup (le log "dupping..." n'apparait pas et l'application n'est en mémoire)
Quelqu'un a t-il une explication ? Cela viendrait-il de mon mmap ??
Merci


Message édité par nORKy le 05-02-2007 à 11:03:05
mood
Publicité
Posté le 05-02-2007 à 11:00:02  profilanswer
 

n°1510827
nORKy
Grmmph...
Posté le 05-02-2007 à 11:02:38  profilanswer
 

Lol, mais quel bétise !!!
Il ne faut pas faire de open avec un chemin relatif avec un deamon ! Mais en absolu !!!
Désolé de la polution
 
[:azka]


Message édité par nORKy le 05-02-2007 à 11:04:45
n°1510867
Taz
bisounours-codeur
Posté le 05-02-2007 à 12:29:49  profilanswer
 

s = strdup(buff);
 
bonjour l'overflow ...

n°1511098
nORKy
Grmmph...
Posté le 05-02-2007 à 19:35:52  profilanswer
 

Taz a écrit :

s = strdup(buff);
 
bonjour l'overflow ...


 
explique au lieu de te moqué.
 
Il n'y a pas de \0 à la fin de la zone mappé par mmap ?

n°1511105
0x90
Posté le 05-02-2007 à 19:56:43  profilanswer
 

T'as pas l'impression de pas allouer s du tout ?


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1511181
Taz
bisounours-codeur
Posté le 05-02-2007 à 22:55:30  profilanswer
 

nORKy a écrit :

explique au lieu de te moqué.
 
Il n'y a pas de \0 à la fin de la zone mappé par mmap ?


pourquoi y en aurait-il ?

n°1511204
Emmanuel D​elahaye
C is a sharp tool
Posté le 05-02-2007 à 23:56:10  profilanswer
 

0x90 a écrit :

T'as pas l'impression de pas allouer s du tout ?


a condition que l'adresse passée en paramètre soit celle d'une chaine C valide, ce code est correct.
 
strdup() (POSIX.1) fait une allocation dynamique de type malloc()  (a libérer par free()).


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1511209
0x90
Posté le 06-02-2007 à 01:06:42  profilanswer
 

Emmanuel Delahaye a écrit :

a condition que l'adresse passée en paramètre soit celle d'une chaine C valide, ce code est correct.
 
strdup() (POSIX.1) fait une allocation dynamique de type malloc()  (a libérer par free()).


 
Oops, lut trop vite, confondu avec strcpy (la faute à strdupa en fait, et spa la première fois...)


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1511267
nORKy
Grmmph...
Posté le 06-02-2007 à 10:30:39  profilanswer
 

Taz a écrit :

pourquoi y en aurait-il ?


 
Parce que mon fichier a peu de chance de tomber sur un multiple de la taille d'une page.
Et que par concéquant, le 'reste' est remplit automatiquement par des 0.

n°1511321
Taz
bisounours-codeur
Posté le 06-02-2007 à 11:56:59  profilanswer
 

...

mood
Publicité
Posté le 06-02-2007 à 11:56:59  profilanswer
 

n°1511350
Emmanuel D​elahaye
C is a sharp tool
Posté le 06-02-2007 à 12:51:44  profilanswer
 

nORKy a écrit :

Parce que mon fichier a peu de chance de tomber sur un multiple de la taille d'une page.
Et que par concéquant, le 'reste' est remplit automatiquement par des 0.


Plutôt hasardeux comme méthode, non ?
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1511352
Taz
bisounours-codeur
Posté le 06-02-2007 à 13:03:05  profilanswer
 

et pour parler de la fonction de ce code, je n'y vois aucun intérêt. Dans ton cas tu ferais mieux de stocker statiquement une fois pour toutes le contenu du fichier ou bien de le relire systématiquement. Parce que là, ton mmap est simplement incapable de détecter un changement de taille de fichier. Et si le fichier est remplacé, c'est foutu, tu dois redémarrer ton application. Et pour quels gains de performance toutes façons ? ...

n°1511354
_darkalt3_
Proctopathe
Posté le 06-02-2007 à 13:11:15  profilanswer
 

nORKy a écrit :

Et que par concéquant, le 'reste' est remplit automatiquement par des 0.


 
 [:le poney de mr pink]


---------------
Töp of the plöp
n°1511765
nORKy
Grmmph...
Posté le 07-02-2007 à 11:50:01  profilanswer
 

Messieurs, plutôt que de jouer les experts critiqueur, vous devriez peût être vous demandez ce que je cherche à faire.
 
Est-ce que j'ai écris quelque part que ce fichier serait modifié (PROT_READ devrait vous aiguillez) ? Est-ce que j'ai dit à quoi il servait ? Est-ce que j'ai dit ca taille ?
De plus, le fichier est stocké statiquement contrairement à ce que vous dites
Donc, mon post est résolu, j'aimerais que vous arretiez les critiques non fondées.

n°1511852
Taz
bisounours-codeur
Posté le 07-02-2007 à 15:44:30  profilanswer
 

ca ne pas répond à mes questions.
 
Mais bon, si t'es content avec ta daube, très bien.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  problème mmap avec un deamon [résolu]

 

Sujets relatifs
xsl/xml la feuille de style n'affiche pas la valeur souhaité[Pb]Projet en C : Distributeur de boisson
[résolu] Créer un fichier .bat (l'intérieur du fichier)probleme d'upload mp3
Probleme avec numeros de la semaine[PHP] Problème de Warning
probleme de session registerprobleme de compliation javac
probleme d'installation d'un module perlprobleme avec smarty
Plus de sujets relatifs à : problème mmap avec un deamon [résolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR