#!/bin/sh
trap 'trap - EXIT; echo exit' EXIT
trap 'echo term; exit' TERM
sleep 100
kill
쉘 프로세스의 PID로 스크립트를 실행하면 종료되지 않습니다. TERM 트랩을 제거하고 동일한 작업을 수행하면 쉘이 종료됩니다. 왜? 마찬가지로 sleep 100
로 바꾸면 sleep 100 & wait
쉘이 종료됩니다 kill
.
답변1
셸은 특정 체크포인트(명령 끝 부분)에서만 미해결 트랩을 확인하며 암시적으로 실행 중인 명령을 기다리는 경우 해당 체크포인트 직전에 있습니다.
반면에 이 신호를 사용하지 않으면 trap .... TERM
프로세스(셸도 포함)를 종료하는 기본 동작으로 신호가 사용됩니다.
를 사용하면 trap .... TERM
더 이상 SIGTERM에 대한 기본 신호 동작이 없어 쉘이 종료되는 것을 방지합니다.