| ./jobs2.sub: line 9: fg: job 1 started without job control |
| fg: 1 |
| Waiting for job 0 |
| job 0 returns 0 |
| Waiting for job 1 |
| job 1 returns 0 |
| Waiting for job 2 |
| job 2 returns 0 |
| Waiting for job 3 |
| job 3 returns 0 |
| Waiting for job 4 |
| job 4 returns 0 |
| Waiting for job 5 |
| job 5 returns 0 |
| Waiting for job 6 |
| job 6 returns 0 |
| Waiting for job 7 |
| job 7 returns 0 |
| [1] Running sleep 5 & |
| [2] Running sleep 5 & |
| [3] Running sleep 5 & |
| [4]- Running sleep 5 & |
| [5]+ Running ( sleep 5; exit 4 ) & |
| 4 |
| 0 |
| i killed it |
| 0 |
| ./jobs.tests: line 19: wait: %1: no such job |
| ./jobs.tests: line 24: fg: no job control |
| wait-for-pid |
| wait-errors |
| ./jobs.tests: line 37: wait: `1-1': not a pid or valid job spec |
| ./jobs.tests: line 38: wait: `-4': not a pid or valid job spec |
| wait-for-background-pids |
| async list wait-for-background-pids |
| async list wait for child |
| forked |
| wait-when-no-children |
| wait-for-job |
| ./jobs.tests: line 60: wait: %2: no such job |
| 127 |
| async list wait-for-job |
| forked |
| fg-bg 1 |
| sleep 5 |
| fg-bg 2 |
| sleep 5 |
| fg-bg 3 |
| sleep 5 |
| fg-bg 4 |
| sleep 5 |
| fg-bg 5 |
| ./jobs.tests: line 87: fg: %2: no such job |
| ./jobs.tests: line 88: bg: job 1 already in background |
| fg-bg 6 |
| ./jobs.tests: line 95: fg: -s: invalid option |
| fg: usage: fg [job_spec] |
| ./jobs.tests: line 96: bg: -s: invalid option |
| bg: usage: bg [job_spec ...] |
| ./jobs.tests: line 101: disown: -s: invalid option |
| disown: usage: disown [-h] [-ar] [jobspec ...] |
| ./jobs.tests: line 105: disown: %1: no such job |
| ./jobs.tests: line 108: disown: %2: no such job |
| wait-for-non-child |
| ./jobs.tests: line 111: wait: pid 1 is not a child of this shell |
| 127 |
| 3 -- 1 2 3 -- 1 - 2 - 3 |
| [1] Running sleep 300 & |
| [2]- Running sleep 350 & |
| [3]+ Running sleep 400 & |
| running jobs: |
| [1] Running sleep 300 & |
| [2]- Running sleep 350 & |
| [3]+ Running sleep 400 & |
| ./jobs.tests: line 128: kill: %4: no such job |
| ./jobs.tests: line 130: jobs: %4: no such job |
| current job: |
| [3]+ Running sleep 400 & |
| previous job: |
| [2]- Running sleep 350 & |
| after kill -STOP |
| running jobs: |
| [1] Running sleep 300 & |
| [3]- Running sleep 400 & |
| stopped jobs: |
| [2]+ Stopped sleep 350 |
| after disown |
| [2]+ Stopped sleep 350 |
| [3]- Running sleep 400 & |
| running jobs: |
| [3]- Running sleep 400 & |
| stopped jobs: |
| [2]+ Stopped sleep 350 |
| after kill -s CONT |
| running jobs: |
| [2]+ Running sleep 350 & |
| [3]- Running sleep 400 & |
| stopped jobs: |
| after kill -STOP, backgrounding %3: |
| [3]+ sleep 400 & |
| killing... |
| done |
| after KILL -STOP, foregrounding %1 |
| sleep 10 |
| done |