Connaitre le nombre de messages d'une boite

Résolu/Fermé
bamoo - 9 mars 2005 à 13:56
[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 - 10 mars 2005 à 10:43
Bonjour,
Je voudrais savoir s'il est possible de connaitre le nombre de messages dans une boite aux lettres, sans lire un seul message ?
avec msgrcv, y'a l'option IPC_NOWAIT, mais on va récupérer un message s'il y en a un, ce que je ne veux pas faire...
Merci

7 réponses

epinard Messages postés 198 Date d'inscription mardi 7 décembre 2004 Statut Membre Dernière intervention 5 mars 2006 27
9 mars 2005 à 14:11
Bonjour,
Attaque le serveur de messagerie POP en telnet selon la methode indiquée sur léa-linux :
http://lea-linux.org/trucs/item.23.html

Il y a peut-être mieux.
0
[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 1 083
9 mars 2005 à 14:17
Salut bamoo,

Perl permet de faire celà avec le module Mail::MboxParser que tu trouveras sur CPAN : http://search.cpan.org/~vparseval/Mail-MboxParser-0.52/ en utilisant la fonction "nmsgs".


Dal
0
Salut,

j'ai peut etre pas bien saisi la finalité de la question, mais il y a korn sous kde qui fait qqch comme ca : une petite boite miniature en dans la barre des taches, qui affiche le nb de message dans ma boite a laposte.net ... sans les telecharger

Phiphi
0
En fait, j'ai mal posé ma question.
J'ai parlé de msgrcv. Il ne s'agit pas d'un boite aux lettres au sens des mails mais d'une file de messages au sens IPC...
Désolé, je me suis mal exprimé.
Merci :-)
0
epinard Messages postés 198 Date d'inscription mardi 7 décembre 2004 Statut Membre Dernière intervention 5 mars 2006 27
9 mars 2005 à 19:16
là, je n'y connais rien.
Désolé
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 1 083
9 mars 2005 à 19:53
Salut

dans "man msgctl", on peut lire çà :

Each message queue has a data structure associated with it, parts of
which may be altered by msgctl() and parts of which determine the actions
of msgctl(). The data structure is defined in <sys/msg.h> and contains
(amongst others) the following members:

struct msqid_ds {
struct ipc_perm msg_perm; /* msg queue permission bits */
struct msg *msg_first; /* first message in the queue */
struct msg *msg_last; /* last message in the queue */
u_long msg_cbytes; /* number of bytes in use on the queue */
u_long msg_qnum; /* number of msgs in the queue */
(...)


Je ne me suis jamais aventuré à programmer ce genre de trucs, mais il me semble que msg_qnum contient l'information que tu cherches.


Dal

PS : effectivement, ta question était très ambigüe
PS2 : beuark, du C
PS3 : le précédent PS n'a rien à voir avec une console de jeu, de même que le présent
0
Ok, c'est exactement ce qu'il me fallait, sauf que je voudrais maintenant compter le nombre de sémaphore d'un type donnée (le type que l'on passe dans msgrcv par exemple).
Si cela n'est pas possible, une solution est de faire 2 files des messages, mais j'aimerais savoir si c'est possible. En regardant la structure dans bits/msq.h, je n'ai rien vu pour faire ca...

Merci
0
[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 1 083
10 mars 2005 à 10:43
Salut bamoo,

Bon alors, je redécouvre les joies du C ... :/

Si ce que tu veux faire c'est analyser pour chaque message dans une file donnée le contenu de "long mtype; /* message type */" d'un message, je ne vois pas comment faire autrement que de récupérer le(s) message(s) en question.

Tu peux récupérer chaque message avec msgrcv dans la structure pointée par l'argument *msgp, faire ton analyse et réinjecter le message dans une seconde file que tu crées me semble-t-il avec msgget ("man msgget") et alimentes avec msgsnd ("man msgsnd").


Dal
0