BEGIN {
exit9 = "echo red; exit 9"
while ((exit9 | getline x) > 0)
print x
printf "close(%s) returned %s\n", exit9, close(exit9)
# run it again, but don't reap the exit status
while ((exit9 | getline x) > 0)
print x
exit0 = "echo blue; exit 0"
while ((exit0 | getline x) > 0)
print x
# reap status out of order
printf "close(%s) returned %s\n", exit0, close(exit0)
# check that we got the correct status from the previously
# exited process
printf "close(%s) returned %s\n", exit9, close(exit9)
}