diff options
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | src/ft_sfx_footstep.c | 35 | ||||
-rw-r--r-- | src/ft_sfx_trap.c | 15 |
3 files changed, 19 insertions, 33 deletions
@@ -133,7 +133,7 @@ ifdef ASAN CFLAGS += ${FSANITIZE} endif #--------------------------------------------------------------------------------------------------# -CDEFS = -D_POSIX_C_SOURCE +CDEFS = -D_DEFAULT_SOURCE CDEFS += -DFT_SCR_SIZE=\"${SCR_SZE}\" ifeq (${OS}, Darwin) CDEFS += -DFT_OS=1 diff --git a/src/ft_sfx_footstep.c b/src/ft_sfx_footstep.c index d7a62d2..391bf79 100644 --- a/src/ft_sfx_footstep.c +++ b/src/ft_sfx_footstep.c @@ -11,36 +11,33 @@ /* ************************************************************************** */ #include <cub3d.h> -#include <stddef.h> #include <unistd.h> #include <stdint.h> #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) { 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) { - 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); - } + 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 dc998da..1499ecf 100644 --- a/src/ft_sfx_trap.c +++ b/src/ft_sfx_trap.c @@ -14,7 +14,6 @@ #include <cub3d.h> #include <unistd.h> #include <stdint.h> -#include <sys/wait.h> static void ft_sfx_pain(t_cub *cl) @@ -27,12 +26,7 @@ static void if (ref % 2) { cl->sfx.pain_pid = fork(); - if (cl->sfx.pain_pid < 0) - { - ft_printf("Pain fork error\n"); - return ; - } - else if (cl->sfx.pain_pid == 0) + if (cl->sfx.pain_pid == 0) { if (ref % 3) execve(*(cl->sfx.pain_one + 0), cl->sfx.pain_one, cl->envp); @@ -46,12 +40,7 @@ void ft_sfx_trap(t_cub *cl) { cl->sfx.trap_pid = fork(); - if (cl->sfx.trap_pid < 0) - { - ft_printf("Trap fork error\n"); - return ; - } - else if (cl->sfx.trap_pid == 0) + if (cl->sfx.trap_pid == 0) execve(*(cl->sfx.trap + 0), cl->sfx.trap, cl->envp); else { |