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

  FORUM HardWare.fr
  Programmation
  C++

  Communication inter processus sous linux

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Communication inter processus sous linux

n°181777
coldfire
De lumière et d'obscurité
Posté le 24-07-2002 à 15:58:02  profilanswer
 

Hop
 
Je cherche à faire ça:
 
un 1er thread envoie des messages dans une file de messages. Il envoie cette structure:
 
struct trigctx {
   struct libnet_ip_hdr ip ;
   char lpfound [1024] ;
   time_t when ;
}
 
Le 2 thread regarde régulièrement dans la file de messages s'il y a un message, et le décortique pour voir s'il correspond à ce dont il a besoin. Il regarde avec IPC_NOWAIT en flag pour pas attendre qu'un message soit là.
Pb: un seg fault.
 

Code :
  1. Envoi du message:
  2. déclaré:
  3. struct trigctx {
  4.    struct libnet_ip_hdr ip ;
  5.    char lpfound [1024] ;
  6.    time_t when ;
  7. } ;
  8. struct trigctx * context ;
  9. Puis, pour l'envoi du message:
  10. if (idmq = msgget (MSGQUEUE, 0) == -1)
  11.    perror ("Cannot link to message queue\n" ) ;
  12. else
  13. {
  14.    context -> ip = (struct libnet_ip_hdr) *ip ;
  15.    context -> when = time(NULL) ;
  16.    strcpy (context -> lpfound, obuf) ;  // obuf est une chaine, évidemment
  17.    msgsnd (idmq, (void *) context, sizeof (context), IPC_NOWAIT) ;
  18. }


Code :
  1. Lecture du message, dans l'autre thread. Même déclarations.
  2. if (msgrcv (idmq, (struct trigctx *) context, 1000, 0, IPC_NOWAIT) == -1)
  3.    perror ("Cannot retreive info" ) ;
  4. }
  5. else
  6. {
  7.    if ((ctx->ip_src == context->ip.ip_src.s_addr) && (ctx -> ip_dst == context->ip.ip_dst.s_addr) && ((context -> ip.ip_p == ctx -> p_src) || (context ->ip.ip_p == ctx->p_dst)) && (time(NULL) - context->when < 5))
  8.    {
  9.       strcpy (ctx->user, context->lpfound) ;
  10.       printf ("lpfound: %s\n", context->lpfound) ;
  11.    }
  12. }


 
ctx est un struct ctx_t *, et cette structure contient entre autre:
 
u_long ip_src ; // ip source
u_long ip_dst ; // ip dest
u_short p_src ; // port source
u_short p_dst ; // port dest
char user [STRING_NAME_SIZE+1] ; // nom de l'utilisateur
 
Une idée?


Message édité par coldfire le 24-07-2002 à 15:59:15
mood
Publicité
Posté le 24-07-2002 à 15:58:02  profilanswer
 

n°182531
coldfire
De lumière et d'obscurité
Posté le 25-07-2002 à 11:53:40  profilanswer
 

personne?


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

  Communication inter processus sous linux

 

Sujets relatifs
GetPrivateProfileString sous linux ?Linux terminal
[c] Comment efface t on l'écran en c sous linux?Cast de gcc Linux par rapport à Forte sous Solaris
Float tronques avec Linux vs SolarisSous linux,comment dire X = n'importe quel caractère???
kestion de thenubi ki tue sur shell sous linux[C]Comment recuperer la valeur ke renvoie un ping sous linux ???
[PHP] Comment recuperer la valeur retourner par un ping sous LinuxSous Linux - Que faut il pour faire du graphique
Plus de sujets relatifs à : Communication inter processus sous linux


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