diff options
Diffstat (limited to 'src/ft_sfx_trap.c')
-rw-r--r-- | src/ft_sfx_trap.c | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/src/ft_sfx_trap.c b/src/ft_sfx_trap.c index 4b3dcf9..d55dd57 100644 --- a/src/ft_sfx_trap.c +++ b/src/ft_sfx_trap.c @@ -11,13 +11,30 @@ /* ************************************************************************** */ #include <cub3d.h> -#include <unistd.h> -#include <stdint.h> +#include <stdlib.h> +#include <pthread.h> + +void + *ft_sfx_trap_thread(void *vargp) +{ + t_sfx *sfx; + + if (FT_OS == 1) + pthread_setcancelstate(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); + else + pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL); + sfx = (t_sfx *)vargp; + pthread_mutex_lock(&sfx->trap_mutex); + while (1) + { + pthread_mutex_lock(&sfx->trap_mutex); + system(sfx->trap); + } + return (NULL); +} void ft_sfx_trap(t_cub *cl) { - cl->sfx.trap_pid = fork(); - if (cl->sfx.trap_pid == 0) - execve(*(cl->sfx.trap + 0), cl->sfx.trap, cl->envp); + pthread_mutex_unlock(&cl->sfx.trap_mutex); } |