Functia cleanup apeleaza msgq_destroy(gateway), iar receive apeleaza msgq_recv(gateway, &msg) si intoarce 0 cand campul nume e "exit". Daca mut "Command msg" in receive, procesul se termina dupa ce primeste exact 6 mesaje de exit (nu stiu de ce 6, dar am rulat de mai multe ori si mereu numai dupa ce receptioneaza 6 mesaje, desi din client trebuie sa trimit mai multe ca el sa primeasca 6).
Nu pornesc niciun server, nu folosesc semafoare, nici memorie partajata. Vreau numai sa testez ca "./client exit exit -1" merge. Anyone? Any advice? --- On Thu, 4/5/12, Andreea Hodea <[email protected]> wrote: > > De ore intregi fac teste fara succes, mi-e imposibil sa vad > bugul. Daca rulez main-ul de mai jos, gateway-ul ajunge sa > afiseze finished, dar procesul nu se termina: > int main() { > /* Message queue for communication with > clients. */ > msgq_t gateway; > Command msg; > > gateway = init(); > > do { > memset(&msg, 0, > sizeof(msg)); > > }while (receive(gateway, &msg)); > > cleanup(gateway); > > dprintf("[GW]finished\n"); > fflush(stdout); > > return EXIT_SUCCESS; > } > > Procesul nu creeaza alte procese, doar apeleaza functiile > pentru cozi din laboratorul 5. Are cineva vreo sugestie? > > Multumesc, > Andreea _______________________________________________ http://elf.cs.pub.ro/so/wiki/resurse/lista-discutii
