![대기 프로세스의 신호로 인해 wait $pid 명령이 중단되는 이유는 무엇입니까?](https://linux55.com/image/181880/%EB%8C%80%EA%B8%B0%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%9D%98%20%EC%8B%A0%ED%98%B8%EB%A1%9C%20%EC%9D%B8%ED%95%B4%20wait%20%24pid%20%EB%AA%85%EB%A0%B9%EC%9D%B4%20%EC%A4%91%EB%8B%A8%EB%90%98%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
내 관찰 내용을 적절하게 설명하는 문서를 찾을 수 없습니다. 다음 코드를 실행한 후 kill -SIGINT $my_pid
다른 셸에서 실행합니다. 처음 두 번은 정확하게 볼게요 #### received trap 2
. 그러나 wait
명령은 모든 신호에서 중단됩니다. 왜?
#!/bin/bash
for s in {0..64}
do
trap "echo '#### received trap $s'" $s
done
./code &
pid=$!
my_pid=$$
wait $pid
wait $pid
답변1
Bash가 내장 함수를 통해 비동기 명령을 기다릴 때
wait
트랩 세트가 있는 신호를 수신하면 대기 내장 함수가 128보다 큰 종료 상태로 즉시 반환된 다음 트랩을 즉시 실행하게 됩니다.