Ctrl+C가 "밖으로 나가는" 것을 방지하는 방법은 무엇입니까?

Ctrl+C가 "밖으로 나가는" 것을 방지하는 방법은 무엇입니까?

Ctrl작업이 완료되면 자동으로 종료하거나 + 종료를 클릭하여 종료할 수 있는 대화형 도구를 실행하고 싶습니다 C. 이 예에서 도구는 echo및 a로 구성됩니다 sleep(따라서 더 이상 진정한 대화형이 아닙니다).

모니터링이 더 필요해서 이렇게 할게요

echo "$(date) Starting!" | tee -a myLog.log; \
echo "I NEED SOME TIME"; \
sleep 10; \
echo "$(date) Ended!" | tee -a myLog.log

하지만 이것은 +를 누르지 않은 경우 에만 Ctrl작동합니다 C. +를 누르면 마지막 에코가 실행되지 않습니다.

어떻게든 전체 프로세스에 대한 "외부" 전파를 Ctrl방지 할 수 있습니까 ?C

shFreeBSD에서 작동합니다.

답변1

내가 올바르게 이해했다면:

#!/bin/sh
trap catchSigint INT
catchSigint(){
    echo
    echo "$(date) Interrupted" | tee -a myLog.log
    exit 1
}
echo "$(date) Starting!" | tee -a myLog.log
echo "I NEED SOME TIME"
sleep 10
echo "$(date) Ended" | tee -a myLog.log

SIGINT를 캡처하고 있습니다( Ctrl+에 의해 트리거됨 C). 감지되면 catchSigint는 실행을 종료하고 "중단됨"을 기록합니다. 그렇지 않으면 "종료됨"이 기록됩니다.

관련 정보