Bash에서 자식 프로세스가 끝날 때까지 기다릴 때는 wait을 사용한다.
만약 기다려야할 프로세스가 여러개라면 for문을 이용해서 처리할 수 있다.
$ help wait wait: wait [-n] [id ...] Wait for job completion and return exit status. Waits for each process identified by an ID, which may be a process ID or a job specification, and reports its termination status. If ID is not given, waits for all currently active child processes, and the return status is zero. If ID is a a job specification, waits for all processes in that job's pipeline. If the -n option is supplied, waits for the next job to terminate and returns its exit status. Exit Status: Returns the status of the last ID; fails if ID is invalid or an invalid option is given.
만약 기다려야할 프로세스가 여러개라면 for문을 이용해서 처리할 수 있다.
#!/usr/bin/env bash
pids=""
for i in $(seq 1 5)
do
sleep 5 &
pids[$i]=$!
echo "pids[$i]="${pids[$i]}
done
echo "waiting..."
for i in ${pids[*]}
do
echo "waiting... $i"
wait $i
echo "done... $i"
done
댓글
댓글 쓰기