if (child == 0 || (child == -1 && errno == ECHILD)) break;
if (child == -1) syscallerror("wait for child process (in sigchld handler)");
for (fd=0; fd<fdsetupsize && fdsetup[fd].catpid != child; fd++);
-fprintf(stderr,"chld found pid=%ld fd=%d setupsize=%d\n",(long)child,fd,fdsetupsize);
if (fd>=fdsetupsize) continue; /* perhaps the caller gave us children */
if ((WIFEXITED(status) && WEXITSTATUS(status)==0) ||
(WIFSIGNALED(status) && WTERMSIG(status)==SIGPIPE) ||