/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* ft_sfx_trap.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: rbousset +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/24 17:17:54 by rbousset #+# #+# */ /* Updated: 2020/02/24 17:17:56 by rbousset ### ########lyon.fr */ /* */ /* ************************************************************************** */ #include #include #include #include #include #include #include void ft_sfx_footstep(t_cub *cl) { static uint8_t ref = 0; pid_t tmp; int status; tmp = waitpid(cl->sfx.footstep_pid, &status, WNOHANG); /* ft_printf("top_pid %d\nfs_pid %d\ntmp %d\n\n", getpid(), cl->sfx.footstep_pid, tmp); */ if (tmp > 0) { cl->sfx.footstep_pid = fork(); if (cl->sfx.footstep_pid == 0) { ref += 1; if (ref > 201) ref = 0; if (ref % 2) execve(*(cl->sfx.footstep_one + 0), cl->sfx.footstep_one, cl->envp); else execve(*(cl->sfx.footstep_two + 0), cl->sfx.footstep_two, cl->envp); } } }