i-bash/tests/jobs.tests

146 lines
2.1 KiB
Text
Raw Normal View History

1997-06-05 14:59:13 +00:00
jobs
echo $?
echo wait-for-pid
sleep 10 &
wait $!
echo wait-errors
wait 1-1
wait -- -4
echo wait-for-background-pids
sleep 5 &
sleep 8 &
wait
echo async list wait-for-background-pids
sleep 5 & sleep 8 &
wait
echo async list wait for child
sleep 5 & echo forked
wait
echo wait-when-no-children
wait
set -m
echo wait-for-job
sleep 5 &
wait %2 # this should be a no-such-job error
echo $?
wait %1
echo async list wait-for-job
sleep 5 & echo forked
wait %1
echo fg-bg 1
sleep 5 &
%1
echo fg-bg 2
sleep 5 &
fg %%
echo fg-bg 3
sleep 5 &
fg %s
echo fg-bg 4
sleep 5 &
fg %?ee
# these next two are error cases
echo fg-bg 5
sleep 15 &
fg %2 # this should be a no-such-job error
bg %1 # this should be a `bg background job?' error
wait
# these may someday mean to start the jobs, but not print the line
# describing the status, but for now they are errors
echo fg-bg 6
sleep 5 &
fg -s %1
bg -s %1
wait
# someday this may mean to disown all running jobs, but for now it is
# an error
disown -r
# this is an error
disown %1
echo wait-for-non-child
wait 1
echo $?
exit 1 | exit 2 | exit 3
echo $? -- ${PIPESTATUS[@]} -- ${PIPESTATUS[0]} - ${PIPESTATUS[1]} - ${PIPESTATUS[2]}
sleep 300 &
sleep 350 &
sleep 400 &
jobs
echo running jobs:
jobs -r
# should be an error
kill -n 1 %4
kill -STOP %2
sleep 5 # give time for the shell to get the stop notification
echo after kill -STOP
echo running jobs:
jobs -r
echo stopped jobs:
jobs -s
disown %1
echo after disown
jobs
echo running jobs:
jobs -r
echo stopped jobs:
jobs -s
kill -s CONT %2
echo after kill -s CONT
echo running jobs:
jobs -r
echo stopped jobs:
jobs -s
kill -STOP %3
sleep 5 # give time for the shell to get the stop notification
echo after kill -STOP, backgrounding %3:
bg %3
disown -h %2
# make sure the killed processes don't cause a message
exec 5>&2
exec 2>/dev/null
echo killing...
kill -n 9 %2 %3
wait # make sure we reap the processes while stderr is still redirected
echo done
exec 2>&5
sleep 10 &
kill -STOP %1
sleep 5 # give time for the shell to get the stop notification
echo after KILL -STOP, foregrounding %1
fg %1
echo done