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

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

[C/C++] Dialoguer avec un processus fils

n°389772
Taz
bisounours-codeur
Posté le 11-05-2003 à 16:03:04  profilanswer
 

Reprise du message précédent :
oui, mais c'est carrément plsu chiant

mood
Publicité
Posté le 11-05-2003 à 16:03:04  profilanswer
 

n°389798
Jam Kurado​beri
Guilty Gear X , uniquement !
Posté le 11-05-2003 à 17:14:29  profilanswer
 

attention il fatu pas confondre les SHM, Shared Memory, donc la memoier partagée, et les semaphores, c'est pas du tout pareil.  :non:  
 
ANTSite > j'ouvre ma pochette de systeme pour te trouver un truc avec dup dup2, mais comme disait je sais pu qui, si le fils n'a pas le meme segment de memoire que le pere je sais pas si ca marchera !

n°389802
Jam Kurado​beri
Guilty Gear X , uniquement !
Posté le 11-05-2003 à 17:32:14  profilanswer
 

bon voila un ptit exemple avec "dup", on va faire un pere qui lance un programme test, on dirait que le programme test va lire sur l'entree standard et afficher ce qu'il a lu mais en faisant un TOUPPER. Le pere avant de lancer test va rediriger l'entree standard du fils vers un pipe et la sortie standard vers un autre pipe, et notre pere va donc ecrire dans ce pipe pour parler a son fils, son fils va repondre et le pere va donc recevoir ce qu'il a envoyé mais en majuscules, et il l'affichera :
 
 

Code :
  1. void main(){
  2. int pere_fils[2], fils_pere[2];
  3. pid_t fils;
  4. //ici on fait les pipes
  5. pipe(pere_fils);
  6. pipe(fils_pere);
  7. if( (fils = fork()) == 0){ //travail du fils
  8. //pour les pipes on ecrit dans le 1 et on lit dans le 0
  9. //ici on ferme un des 2 sens pour chaque pipe, ceux dont on ne se sert pas
  10. close(pere_fils[1]);
  11. close(fils_pere[0]);
  12. //on commence les dup
  13. close(0);
  14. dup(pere_fils[0]);
  15. close(pere_fils[0]);
  16. close(1);
  17. dup(fils_pere[1]);
  18. close(fils_pere[1]);
  19. //on lance test
  20. execlp("test","test",NULL);
  21. }
  22. else{ //travail du pere
  23. char c = 'a';
  24. char buf;
  25. while(c != '0'){
  26. cin >> c;
  27. write(pere_fils[1],c,1);
  28. read(fils_pere[0],buf,1);
  29. cout<<buf<<endl;
  30. }
  31. }
  32. }

 
 
voila j'espere que c'est assez clair, et surtout que ca marche ;-)

n°396749
Jam Kurado​beri
Guilty Gear X , uniquement !
Posté le 16-05-2003 à 13:46:54  profilanswer
 

antp : ta laché l'affaire ou ta oublié de repondre lol ;)

n°396774
antsite
Je me souviens
Posté le 16-05-2003 à 13:58:49  profilanswer
 

Salut,
Oui pardon ce n'est pas très correct de ne plus donner de nouvelles après tout ça mais c'est juste qu'en tant qu'étudiant la semaine je ne suis pas chez moi donc je ne peux pas tester, donc normalement ce week-end je serais en mesure de répondre (et de surement te remercier!)
:hello
   ANT
 
P.S. : antp != antsite !!! (je suis pas encore modo lol)

n°397889
Jam Kurado​beri
Guilty Gear X , uniquement !
Posté le 17-05-2003 à 14:31:17  profilanswer
 

ok lol dsl pour la confondaison entre antp et antsite ^^
jespere aue mon truc marchera tiens moi au courant ^^

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
[Unix] signaux et processus[C] Timeout dans un processus ?
TCP-IP Pb recv bloquant et terminaison de processussynchronisation de processus
Recherche de l'arrière petit fils[VC++]Etat d'un processus Windows (Service)
Comment implémenter un processus persistant sur un serveur web?L'exemple avec les boites reliees par des fils ?
[XSLT] les balises <xsl:param name="param1"> dans 1 processus XSLTlancer un processus sous win ?
Plus de sujets relatifs à : [C/C++] Dialoguer avec un processus fils


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)