diff options
Diffstat (limited to '')
-rw-r--r-- | src/ft_sfx_footstep.c | 40 | ||||
-rw-r--r-- | src/ft_sfx_trap.c | 3 |
2 files changed, 20 insertions, 23 deletions
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 <sys/types.h> #include <sys/wait.h> -#include <sys/types.h> -#include <sys/time.h> -#include <sys/resource.h> -#include <libft.h> 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 <unistd.h> #include <stdint.h> -#include <pthread.h> 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 { |