blob: ea5935df6dc717fe6e5a862bdc1a58f50ff8979b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
/* ISC license. */
#include <sys/wait.h>
#include <skalibs/djbunix.h>
int waitn_posix (pid_t *pids, unsigned int n, int *w)
{
pid_t wanted = n ? pids[n-1] : 0 ;
while (n)
{
int wstat ;
unsigned int i = 0 ;
pid_t pid = wait_nointr(&wstat) ;
if (pid < 0) return 0 ;
for (; i < n ; i++) if (pid == pids[i]) break ;
if (i < n) pids[i] = pids[--n] ;
if (pid == wanted) *w = wstat ;
}
return 1 ;
}
|