Reimplement builtin_wait using wait handles

This switches builtin_wait from waiting on jobs in the active job list, to
waiting on the wait handles. The wait handles may be either derived from
the job list itself, or from saved wait handles from jobs that exited in
the background.

Fixes #7210
This commit is contained in:
ridiculousfish
2021-05-15 19:08:11 -07:00
parent 632e150152
commit 5de63c9cbb
4 changed files with 126 additions and 165 deletions

26
tests/checks/wait.fish Normal file
View File

@@ -0,0 +1,26 @@
# RUN: %fish %s
# Ensure that we can wait for stuff.
status job-control full
set pids
for i in (seq 16)
command true &
set -a pids $last_pid
command false &
set -a pids $last_pid
end
# Note fish does not (yet) report the exit status of waited-on commands.
for pid in $pids
wait $pid
end
for i in (seq 16)
command true &
command false &
end
wait true false
jobs
# CHECK: jobs: There are no jobs