
main() must always return an int. return 0 at the end of your function.
The consensus is that, when possible, return instead of exit.
You could make a helper function that accepts a bool (from stdbool.h) and a const char *, and if the bool is false then perror and exit(EXIT_FAILURE) are called.


UNIX semaphores
Many effects apply at the start of a creature's turn; however, summoned creatures don't take turns and only perform actions when their summoner expends an action.

Thus, is a summoned creature affected by things that apply their effects at the start of a turn?

For example, if a summoned creature is within an aura or zone that deals damage at the start of a creature's turn, does the summoned creature ever take that damage?
