Спасибо всем за помощь. Но на самом деле, у меня обработчик вот такого вида: static void sigchld_handler(int sig) { int status; pid_t pid; pid = __libc_wait(&status); if (pid > 0) { /* Check for pid... */ } } Все, больше ничего нет. И вот этот-то __libc_wait и подвисает при повторном входе. Так что я все равно не совсем понял, из-за чего... :(