From 162df0a132b3baa19086a16b1c34ea871e3cd418 Mon Sep 17 00:00:00 2001 From: JozanLeClerc Date: Fri, 13 Mar 2020 19:31:49 +0100 Subject: There is no way I pthread --- src/ft_sfx_footstep.c | 40 +++++++++++++++++++--------------------- src/ft_sfx_trap.c | 3 +-- 2 files changed, 20 insertions(+), 23 deletions(-) (limited to 'src') diff --git a/src/ft_sfx_footstep.c b/src/ft_sfx_footstep.c index bccb847..d9f083d 100644 --- a/src/ft_sfx_footstep.c +++ b/src/ft_sfx_footstep.c @@ -16,29 +16,27 @@ #include #include -#include -#include -#include -#include void ft_sfx_footstep(t_cub *cl) { - (void)cl; - /* static uint8_t ref = 0; */ + static uint8_t ref = 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); */ - /* } */ - /* else */ - /* wait(&cl->sfx.footstep_pid); */ + if (waitpid(cl->sfx.footstep_pid, 0, WNOHANG) > 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); + } + else + wait(&cl->sfx.footstep_pid); + } } diff --git a/src/ft_sfx_trap.c b/src/ft_sfx_trap.c index b52b9c1..1499ecf 100644 --- a/src/ft_sfx_trap.c +++ b/src/ft_sfx_trap.c @@ -15,7 +15,6 @@ #include #include -#include static void ft_sfx_pain(t_cub *cl) { @@ -41,7 +40,7 @@ void ft_sfx_trap(t_cub *cl) { cl->sfx.trap_pid = fork(); - else if (cl->sfx.trap_pid == 0) + if (cl->sfx.trap_pid == 0) execve(*(cl->sfx.trap + 0), cl->sfx.trap, cl->envp); else { -- cgit v1.2.3