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

  FORUM HardWare.fr
  Programmation

  programmation système

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

programmation système

n°112081
nawbacan
==>L'informatique est ma joie
Posté le 14-03-2002 à 15:39:00  profilanswer
 

salut à tous !
ptite kestion : imaginez que vous deviez creer un ensemble de processus (l'appel à fork() permet la création d'un processus) et que vous deviez ensuite relier tout ces processus à l'aide de tubes (appel à pipe() + redirection d'entrée/sortie sur les processus)
jusque là pas de prob...simplement UN prob...comment relier le dernier processus créé avec le premier ?  
je sais pas si j'ai été très clair....
merci d'avance pour d'éventuelles idées

mood
Publicité
Posté le 14-03-2002 à 15:39:00  profilanswer
 

n°112083
DLR
Hein c'était quoi la question?
Posté le 14-03-2002 à 15:41:37  profilanswer
 

nawbacan a écrit a écrit :

salut à tous !
ptite kestion : imaginez que vous deviez creer un ensemble de processus (l'appel à fork() permet la création d'un processus) et que vous deviez ensuite relier tout ces processus à l'aide de tubes (appel à pipe() + redirection d'entrée/sortie sur les processus)
jusque là pas de prob...simplement UN prob...comment relier le dernier processus créé avec le premier ?  
je sais pas si j'ai été très clair....
merci d'avance pour d'éventuelles idées  




 
getppid() ca renvoie bien le pid du pere?
sinon utilise des threads c le meme espace d'adressage
regarde l'API POSIX 4.0 comment ca marche :)


---------------
Narf... It is broken...
n°112114
nawbacan
==>L'informatique est ma joie
Posté le 14-03-2002 à 16:22:20  profilanswer
 

en y réfléchissant un peu plus-...je me dit qu'une tube nommé pour faire kommiker le dernier et le premier Ce serai pas mal..
 
en effet , un tube anonyme :  
c'est création d'un tube, puis un fork. ainsi les deux procesus sont lié.
mais à partir de 2 processu existant...je peut pas créer un tube anonyme entre les 2. alors tube nommés... t'en pense quoi DLR ?
 
pis API posix...fo ke je mate...

n°112115
nawbacan
==>L'informatique est ma joie
Posté le 14-03-2002 à 16:24:38  profilanswer
 

pour finir fo kand meme ke je dise...que lorsque l'anneau de processus est en place, je fais un recouvrement de code à tout les processus. le code de recouvrement est un jeu auxquele chaque processus "joue" .

n°112135
bjbebert
Posté le 14-03-2002 à 16:52:54  profilanswer
 

Tu les fait dans quel ordre les fork ?
Est ce que c'est  : A crée B, qui crée C, qui crée D...
ou bien A crée B, puis C, puis D.
 
Dans le 2ème cas, on peut imaginer que A crée tous les pipes, puis 'indique' à chaque fils lequel utiliser ?
 
exemple :  
A crée les pipes AB et BC, le fils B en lui indiquant d'utiliser les pipes AB et BC.
A crée le pipe CD, le fils C en lui indiquant d'utiliser les pipes BC et CD.
.
.
.
A crée le pipe DA, le fils D en lui indiquant d'utiliser les pipes CD et DA.

n°112151
DLR
Hein c'était quoi la question?
Posté le 14-03-2002 à 17:10:58  profilanswer
 

nawbacan a écrit a écrit :

en y réfléchissant un peu plus-...je me dit qu'une tube nommé pour faire kommiker le dernier et le premier Ce serai pas mal..
 
en effet , un tube anonyme :  
c'est création d'un tube, puis un fork. ainsi les deux procesus sont lié.
mais à partir de 2 processu existant...je peut pas créer un tube anonyme entre les 2. alors tube nommés... t'en pense quoi DLR ?
 
pis API posix...fo ke je mate...  




 
je te conseille fortement d'utiliser les threads a l aplace des processus c plus souple a utiliser :D
man pthread_create tu dois avoir tout ce qui faut et meme plus (synchro mutex etc)
man poxi peut etre auss ique ca marche je sais pas


---------------
Narf... It is broken...
n°112158
nawbacan
==>L'informatique est ma joie
Posté le 14-03-2002 à 17:15:35  profilanswer
 

afin d'avoir un controle sur le nombre de processus générés, j'utilise un fonction récursive.
donc A créée son pipe  
    puis crée B puis  
    B cree son pipe et cree C
   .....  
    .....
     
donc j'ai bien une série de processus communicant par les pipe
MAIS kand j'arrive sur le dernier admetton E, je sais pas comment  spécifier que le pile qui va être crréer soir aussi communiquer avec A....

n°112204
DLR
Hein c'était quoi la question?
Posté le 14-03-2002 à 17:53:53  profilanswer
 

nawbacan a écrit a écrit :

afin d'avoir un controle sur le nombre de processus générés, j'utilise un fonction récursive.
donc A créée son pipe  
    puis crée B puis  
    B cree son pipe et cree C
   .....  
    .....
     
donc j'ai bien une série de processus communicant par les pipe
MAIS kand j'arrive sur le dernier admetton E, je sais pas comment  spécifier que le pile qui va être crréer soir aussi communiquer avec A....  




 
tu fais une fonction donner_parent et donne_pipe
tu chaines tout
et quand donner_parent c null tu fais donner pipe et tu boucle le tout
ca peut ptete marche sauf si c trop objet pour le C :D


---------------
Narf... It is broken...
n°112231
Jar Jar
Intaigriste
Posté le 14-03-2002 à 18:28:16  profilanswer
 

Au début, tu crées le pipe qui fera le rebouclage. Puis quand chaque parent forke, il le donne au fils et le vire chez lui. Comme ça, il arrive intact dans le dernier.


---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
n°113324
nawbacan
==>L'informatique est ma joie
Posté le 17-03-2002 à 22:57:41  profilanswer
 

bon je me suis remis un peu sur le problème, j'ai eu du job entre deux.  
ok je vois sur le principe que le parent passe le pipe à son fils et qu'il le vire de chez lui.  
MAIS si je suis dans le code du parent ok le fils aura son pipe lors du fork, MAIS ensuitesi je vire le pipe du parent , le fils le perd en meme temps. ou alors j'ai rien compris.
 
pour les thread , cé possible que ce soit plus facile..mais je pense que j'ai pas le temps de les apprendre.

mood
Publicité
Posté le 17-03-2002 à 22:57:41  profilanswer
 

n°113369
LeGreg
Posté le 18-03-2002 à 00:37:35  profilanswer
 

nawbacan a écrit a écrit :

 
MAIS si je suis dans le code du parent ok le fils aura son pipe lors du fork, MAIS ensuitesi je vire le pipe du parent , le fils le perd en meme temps. ou alors j'ai rien compris.




le fils est un nouveau process qui ne sait rien de ce que fait son pere.
Il a connaissance du passé jusqu'au fork puisque le pere et le fils etaient le meme process. Apres le fork il ignore ce que fait son pere. (sauf si tu as mis en place des processus
de communication via des pipes ou signaux)
 
A+
LEGREG

n°113389
bjbebert
Posté le 18-03-2002 à 01:32:30  profilanswer
 

nawbacan a écrit a écrit :

 
MAIS si je suis dans le code du parent ok le fils aura son pipe lors du fork, MAIS ensuitesi je vire le pipe du parent , le fils le perd en meme temps. ou alors j'ai rien compris.



D'après ce que je crois me souvenir...
Lorsque tu fork, tu te retrouves avec un pipe ouvert à la fois dans le père et le fils. Si tu le fermes (l'entrée ou la sortie)dans le père, il reste ouvert dans le fils.


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

  programmation système

 

Sujets relatifs
Chat programmation sur IRC[C/Unix] Programmation systeme
Qui connait le langage de programmation P-Code ???je veux demarrer avec la programmation...
programmation systemeProgrammation d'un site utilisant le SSL ou autre systeme de paiement
[ programmation systeme] => lisez donc[Linux] programmation systéme
programmation systéme sous linuxprogrammation système unix
Plus de sujets relatifs à : programmation système


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