kinda work with SIGCHLD