Lines 21-28
Link Here
|
21 |
# Setup a pipe for children to write their pids to when they finish. |
21 |
# Setup a pipe for children to write their pids to when they finish. |
22 |
mj_control_pipe=$(mktemp -t multijob.XXXXXX) |
22 |
mj_control_pipe=$(mktemp -t multijob.XXXXXX) |
23 |
rm "${mj_control_pipe}" |
23 |
rm "${mj_control_pipe}" |
24 |
mkfifo "${mj_control_pipe}" |
24 |
mkfifo -m 600 "${mj_control_pipe}" |
25 |
__redirect_alloc_fd mj_control_fd "${mj_control_pipe}" |
25 |
__redirect_alloc_fd mj_read_fd "${mj_control_pipe}" |
|
|
26 |
__redirect_alloc_fd mj_write_fd "${mj_control_pipe}" |
26 |
rm -f "${mj_control_pipe}" |
27 |
rm -f "${mj_control_pipe}" |
27 |
|
28 |
|
28 |
# See how many children we can fork based on the user's settings. |
29 |
# See how many children we can fork based on the user's settings. |
Lines 31-43
Link Here
|
31 |
} |
32 |
} |
32 |
|
33 |
|
33 |
__multijob_child_init() { |
34 |
__multijob_child_init() { |
34 |
trap 'echo ${BASHPID} $? >&'${mj_control_fd} EXIT |
35 |
trap 'echo ${BASHPID} $? >&'${mj_write_fd} EXIT |
35 |
trap 'exit 1' INT TERM |
36 |
trap 'exit 1' INT TERM |
36 |
} |
37 |
} |
37 |
|
38 |
|
38 |
__multijob_finish_one() { |
39 |
__multijob_finish_one() { |
39 |
local pid ret |
40 |
local pid ret |
40 |
read -r -u ${mj_control_fd} pid ret |
41 |
read -r -u ${mj_read_fd} pid ret |
41 |
: $(( --mj_num_jobs )) |
42 |
: $(( --mj_num_jobs )) |
42 |
return ${ret} |
43 |
return ${ret} |
43 |
} |
44 |
} |