Ukázkový kód k 2. přednášce používá makro `WEXITSTATUS` bez kontroly `WIFEXITED`
Viz https://osy.pages.fel.cvut.cz/docs/prednasky/pdf/02-priklady.tgz, soubor 5-fork/wait.c
:
int child_ret;
// ...
pid_t w = waitpid(f, &child_ret, 0);
printf("Child exit value %i wait returns %i fork returns %i\n", WEXITSTATUS(child_ret), w, f);
Makro WEXITSTATUS
by se podle https://man7.org/linux/man-pages/man2/wait.2.html mělo používat pouze pokud WIFEXITED
vrátilo true
(což ale kód nemůže vědět, když to nekontroluje):
- WEXITSTATUS(wstatus)
- returns the exit status of the child. (...) This macro should be employed only if
WIFEXITED
returned true.
Použití WEXITSTATUS
bez kontroly WIFEXITED
vytýkal @kafkamat i v domácích úkolech, takže si myslím, že by se to nemělo objevit ani v příkladech z přednášky.