Path: blob/master/philo_bonus/ft_check_dead_bonus.c
882 views
/* ************************************************************************** */1/* */2/* ::: :::::::: */3/* ft_check_dead_bonus.c :+: :+: :+: */4/* +:+ +:+ +:+ */5/* By: yabtaour <[email protected]> +#+ +:+ +#+ */6/* +#+#+#+#+#+ +#+ */7/* Created: 2022/05/23 00:06:10 by yabtaour #+# #+# */8/* Updated: 2022/05/23 11:42:16 by yabtaour ### ########.fr */9/* */10/* ************************************************************************** */11#include "philosophers_bonus.h"1213void ft_kill(t_data *data)14{15int i;1617i = 0;18while (i < data->philos_num)19{20kill (data->pid[i], SIGINT);21i++;22}23}2425void ft_destroy_sem(t_data *data)26{27sem_close(data->fork);28sem_close(data->output);29sem_close(data->eat);30sem_unlink("philo_forks");31sem_unlink("philo_output");32sem_unlink("philo_eat");33}3435void ft_end(t_data *data)36{37ft_kill(data);38ft_destroy_sem(data);39free(data->pid);40free(data);41}4243void *ft_check_dead(t_philo *philo)44{45long long now;46long long norm;4748while (1)49{50now = ft_timestamp();51if (philo->eat == philo->data->must_eat)52exit(0);53if (now - philo->last_meal >= philo->data->time_to_die)54{55norm = now - philo->data->birth;56philo->is_dead = 1;57sem_wait(philo->data->output);58printf("[%lld] philo %d died\n", norm, philo->philo_id);59ft_end(philo->data);60exit(1);61}62usleep(100);63}64return (NULL);65}666768