Re: Veselá úložka ze Dne firem na MFFBLEK. (28. 11. 2008 - 7:17)
Další bugy: 11) printf("%d: Child %d exited\n", t, pid); nemusí být nutně typu int. t je typu time_t, pid je typu pid_t.
12) waitpid vrátí 0 když má děti, které ještě neskončily.
13) time() -> time(NULL)
14) pokud tomu signálu nedáš SA_RESTART, tak ti bude moct vracet chybu EINTR všechno možné --- např. i ten waitpid nebo printf.
Pokud signálu SA_RESTART dáš, tak je přerušení selectu signálem nekonzistentní (na Linuxu to přeruší, na Irixu ne). Já to vyřešil pomocí pipy, do které ten signál zapíše a tím select probudí. Další možné řešení je siglongjmp.
BTW. tu bugu - race condition se signálem a select se mi v první verzi Linksu podařilo vyrobit taky.
11) printf("%d: Child %d exited\n", t, pid);
nemusí být nutně typu int. t je typu time_t, pid je typu pid_t.
12) waitpid vrátí 0 když má děti, které ještě neskončily.
13) time() -> time(NULL)
14) pokud tomu signálu nedáš SA_RESTART, tak ti bude moct vracet chybu EINTR všechno možné --- např. i ten waitpid nebo printf.
Pokud signálu SA_RESTART dáš, tak je přerušení selectu signálem nekonzistentní (na Linuxu to přeruší, na Irixu ne). Já to vyřešil pomocí pipy, do které ten signál zapíše a tím select probudí. Další možné řešení je siglongjmp.
BTW. tu bugu - race condition se signálem a select se mi v první verzi Linksu podařilo vyrobit taky.