philosophers_prep/12_philosophers_bonus.txt

24 lines
1.1 KiB
Plaintext

Assignment name: philosophers_bonus
Expected files: philosophers_bonus.c
Allowed functions: memset, printf, malloc, free, write, fork, kill, exit,
pthread_create, pthread_detach, pthread_join, usleep, gettimeofday,
waitpid, sem_open, sem_close, sem_post, sem_wait, sem_unlink
-------------------------------------------------------------------------
Implementa a versão bonus do Philosophers:
- Cada filósofo é um processo separado (não thread)
- Usa semáforos POSIX nomeados para coordenação
- Processo pai monitora todos os processos filhos
- Se um filósofo morre, mata todos os outros processos
Funcionalidades adicionais:
- Cleanup adequado de semáforos nomeados
- Handling de sinais (SIGINT, SIGTERM)
- Relatório final com estatísticas
Uso: `./philosophers_bonus 5 800 200 200 7`
Hint: Bonus part usa processos em vez de threads.
Semáforos POSIX nomeados permitem comunicação entre processos.
Usa fork() para criar processos filhos e waitpid() para monitorizar.
O cleanup de semáforos é crucial - usa sem_unlink() e handling de sinais para cleanup em caso de interrupção.