Connaitre le nombre de messages d'une boite

Résolu
bamoo -  
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   -
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
A voir également:

7 réponses

epinard Messages postés 198 Date d'inscription   Statut Membre Dernière intervention   27
 
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 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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
Phiphi
 
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
bamoo
 
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   Statut Membre Dernière intervention   27
 
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 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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
bamoo
 
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 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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