hush: fix "wait PID"

It was not properly interruptible, and did not update job status
(the exited processes were still thought of as running).

function                                             old     new   delta
process_wait_result                                    -     453    +453
wait_for_child_or_signal                               -     199    +199
run_list                                             996    1002      +6
checkjobs_and_fg_shell                                41      43      +2
builtin_wait                                         328     215    -113
checkjobs                                            516     142    -374
------------------------------------------------------------------------------
(add/remove: 2/0 grow/shrink: 2/2 up/down: 660/-487)          Total: 173 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko
2016-10-28 21:57:31 +02:00
parent 8f7b0248ad
commit 7e6753609d
7 changed files with 246 additions and 174 deletions

View File

@@ -0,0 +1,2 @@
0
[1] Running sleep 2

View File

@@ -0,0 +1,3 @@
sleep 2 & sleep 1 & wait $!
echo $?
jobs

View File

@@ -0,0 +1,2 @@
0
[1] Running sleep 3

View File

@@ -0,0 +1,4 @@
sleep 3 & sleep 2 & sleep 1
wait $!
echo $?
jobs

View File

@@ -0,0 +1,2 @@
3
[1] Running sleep 2

View File

@@ -0,0 +1,3 @@
sleep 2 & (sleep 1;exit 3) & wait $!
echo $?
jobs