Máme konfigurák tvaru:
<port> <wait|nowait> <cmd>
Počet řádků není nijak omezen, na krásu parsování se nehledí, převod text-> struktura nebyl nijak hodnocen. Můžeme předpokládat, že je korektní
Program na začátku načte konfigurák, nějak ho vypíše na výstup a pak se bindne na porty dle konfigurace a když se na ně něco připojí, tak spustí <cmd> a předá mu spojení:
- nowait -> udělá accept, deskriptory 0,1,2 nastaví na socket z acceptu a execne program (tudíž ten ani neví, že pracuje po síti)
wait -> přímo poslouchací socket nastaví jako deskriptor 0 a execne program (a ten teprve volá accept)
Klíčové věci: getaddrinfo (aby umělo IPv4 i IPv6), poll, zavírat dětem sockety, co nepotřebují, hlídat si mrtvé děti a uklízet po nich.
První to vzdal asi po 4 hodinách, po asi 4:45 to měl první, celkem to dva vzdali a tři udělali, tuším za 2. Já jsem končil s jedničkou asi 21.15.
Přikládám svoje řešení, docela funguje, chybu mi v něm nenašel.