Bash가 실행하는 내장되지 않은 명령이 신호를 처리하는 방법에 대한 다음 설명을 설명해 주실 수 있나요?

Bash가 실행하는 내장되지 않은 명령이 신호를 처리하는 방법에 대한 다음 설명을 설명해 주실 수 있나요?

배쉬 매뉴얼에서

Bash가 실행한 비내장 명령은 신호 처리기를 쉘이 상위로부터 상속받은 값으로 설정합니다.

작업 제어가 비활성화되면 비동기 명령은 이러한 상속된 처리기 외에 SIGINT 및 SIGQUIT를 무시합니다.

명령 대체의 결과로 실행되는 명령은 키보드에서 생성된 작업 제어 신호 SIGTTIN, SIGTTOU 및 SIGTSTP를 무시합니다.

위의 의미에 대한 몇 가지 예를 들어줄 수 있는 사람이 있는지 궁금합니다. 감사해요.

관련된터미널에 ctrl-c를 입력할 때 포그라운드 작업이 완료되기 전에 종료되지 않는 이유는 무엇입니까?

답변1

stty tostop
echo bar >&2 & # no output from echo, just from shell job control
fg # now the output is produced
    bar
text=$(echo foo; echo bar >&2) # command substitution in foreground command
    bar
text=$(echo /etc/passwd; echo bar >&2) ; ls -l "$text" &
    bar
fg
    -rw-r--r-- 1 root root 2745 18. Feb 00:36 /etc/passwd

백그라운드 명령의 "정상" 출력은 지연되지만 SIGTTOU백그라운드 명령 대체의 출력은 stderr즉시 표시되기 때문입니다.

외부 명령

trap '' HUP
bash
sleep 1234 # PID 23456

다른 껍질에

kill -HUP 23456 # does not abort sleep

관련 정보