problème mmap avec un deamon [résolu] - C - Programmation
Marsh Posté le 05-02-2007 à 11:02:38
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
Marsh Posté le 05-02-2007 à 12:29:49
ReplyMarsh Posté le 05-02-2007 à 19:35:52
Taz a écrit : s = strdup(buff); |
explique au lieu de te moqué.
Il n'y a pas de \0 à la fin de la zone mappé par mmap ?
Marsh Posté le 05-02-2007 à 19:56:43
T'as pas l'impression de pas allouer s du tout ?
Marsh Posté le 05-02-2007 à 22:55:30
nORKy a écrit : explique au lieu de te moqué. |
pourquoi y en aurait-il ?
Marsh Posté le 05-02-2007 à 23:56:10
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()).
Marsh Posté le 06-02-2007 à 01:06:42
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. |
Oops, lut trop vite, confondu avec strcpy (la faute à strdupa en fait, et spa la première fois...)
Marsh Posté le 06-02-2007 à 10:30:39
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.
Marsh Posté le 06-02-2007 à 12:51:44
nORKy a écrit : Parce que mon fichier a peu de chance de tomber sur un multiple de la taille d'une page. |
Plutôt hasardeux comme méthode, non ?
Marsh Posté le 06-02-2007 à 13:03:05
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 ? ...
Marsh Posté le 06-02-2007 à 13:11:15
nORKy a écrit : Et que par concéquant, le 'reste' est remplit automatiquement par des 0. |
Marsh Posté le 07-02-2007 à 11:50:01
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.
Marsh Posté le 07-02-2007 à 15:44:30
ca ne pas répond à mes questions.
Mais bon, si t'es content avec ta daube, très bien.
Marsh Posté le 05-02-2007 à 11:00:02
voici un code qui map un fichier en mémoire :
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