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)
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