사용자는 파일 생성을 계속하려면 Ctrl-C를 누릅니다.

사용자는 파일 생성을 계속하려면 Ctrl-C를 누릅니다.

make개발 웹 서버를 실행하는 데 사용합니다 . 서버가 종료된 후 몇 가지 정리 작업을 수행하고 싶습니다. +를 누르면 Ctrl서버가 종료되지만 C이로 인해 make추가 명령 실행이 중지됩니다. 간단한 Makefile 예제로 다음을 제공합니다.

default:
    sleep 10
    echo hello

전화를 걸고 make시간이 끝나기 전에 Ctrl+를 누르면 C'안녕하세요'가 표시되지 않습니다. 내가 시도한 것 (기반이 답변):

  • -i-k또는 둘 다를 사용하여 make 실행
  • 두 번째 항목을 -sleep 10또는 로 변경하십시오.sleep 10 | true

답변1

나는 답을 찾았다스택 오버플로: 명령을 두 개로 나누고 "외부" 명령에서 SIGINT를 포착합니다.

external-target:
    bash -c "trap 'trap - SIGINT SIGTERM ERR; echo hello; exit 1' SIGINT SIGTERM ERR; $(MAKE) internal-target"

internal-target:
    sleep 10

관련 정보