[C/*NIX]pipe met meerdere lezers/schrijvers

Pagina: 1
Acties:

  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

Topicstarter
morgen examen netwerkprogrammatie en ik hoorde dat er een vraag was waarin je een (chat)servertje moest in elkaar boksen die forkte. probleem is dus de Inter-Process Communicatie

de kerel die het examen reeds gehad heeft, zei me dat de docent et met 2 pipes liever had gezien.
maar dit lijkt me quasi inmogelijk...

nu heb ik deze code in elkaar gebokst waar dit gebeurt:
er zijn 2 pipes: 1 voor ouder->kinderen en 1 voor kinderen->ouder
de ouder forkt en houdt de pid het kind bij voor later.
het kind sluit 2 pipe-uiteindes die hij niet nodig heeft en zet een sighandler op SIGUSR
wanneer een kind data binnenkrijgt schrijft ie rechtstreeks in de pipe naar de ouder.
die ouder leest dit (select) en start een functie waarin ie telkens dezelfde data naar de pipe richting kinderen schrijft en een SIGUSR naar dat kind in het rijtje zend, die op zijn beurt de data leest en die doorzend naar zijn client.

nu missen er nog enkele dingetjes in de broncode, enz maar mijn vraag is duidelijk dit:
kan het dat een pipe geshared wordt door meerdere processen?
(1 lezen, meeerdere schrijven of 1 schrijven, meerdere (elk op z'n beurt) lezen)

ASSUME makes an ASS out of U and ME


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 02-05 01:32
Ja hoor, dat kan prima. Dat werkt net zoals een named pipe of een gewoon bestand. Iedereen die wil kan 'm open hebben, maar je moet er wel aan denken dat als je meerdere writers of meerdere readers hebt, je de file descriptor moet locken om te voorkomen dat je door elkaar heen leest of schrijft.

Maar ik begrijp niet helemaal wat je wilt; je denkt dat het onmogelijk is, maar je hebt er wel een programma voor geschreven? Werkt je programma niet goed dan?

[ Voor 23% gewijzigd door Soultaker op 19-06-2005 23:41 ]


  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

Topicstarter
ondertussen is het examen voorbij... piece of cake...

nee, ik bedoelde dat er geen nette manier is om zoiets op te lossen...

ASSUME makes an ASS out of U and ME