diff options
Diffstat (limited to 'src')
| -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  	{ | 
