xref: /csrg-svn/usr.bin/window/wwchild.c (revision 18727)
113921Sedward #ifndef lint
2*18727Sedward static char sccsid[] = "@(#)wwchild.c	3.5 04/24/85";
313921Sedward #endif
413921Sedward 
5*18727Sedward /*
6*18727Sedward  * Copyright (c) 1983 Regents of the University of California,
7*18727Sedward  * All rights reserved.  Redistribution permitted subject to
8*18727Sedward  * the terms of the Berkeley Software License Agreement.
9*18727Sedward  */
10*18727Sedward 
1113921Sedward #include "ww.h"
1213921Sedward #include <sys/wait.h>
1313921Sedward 
1413921Sedward wwchild()
1513921Sedward {
1615630Sedward 	extern errno;
1715630Sedward 	int olderrno;
1814407Sedward 	register struct ww **wp;
1913921Sedward 	union wait w;
2013921Sedward 	int pid;
2113921Sedward 
2215630Sedward 	olderrno = errno;
2314407Sedward 	while ((pid = wait3(&w, WNOHANG|WUNTRACED, (struct rusage *)0)) > 0) {
2414407Sedward 		for (wp = wwindex; wp < &wwindex[NWW]; wp++) {
2514407Sedward 			if (*wp && (*wp)->ww_state == WWS_HASPROC
2614407Sedward 			    && (*wp)->ww_pid == pid) {
2714407Sedward 				(*wp)->ww_state = WWS_DEAD;
2813921Sedward 				break;
2913921Sedward 			}
3013921Sedward 		}
3113921Sedward 	}
3215630Sedward 	errno = olderrno;
3313921Sedward }
34