Bash 프로세스는 기본 신호 처리기/트랩을 어디서 얻나요?

Bash 프로세스는 기본 신호 처리기/트랩을 어디서 얻나요?

에서 https://stackoverflow.com/questions/50606753/do-getrlimit-and-setrlimit-work-by-reading-from-and-writing-to-etc-sec#comment88227414_50607042

Bash에는 SIGQUIT에 대한 특수 핸들러가 없으며 코어 덤프 생성 프로세스에 관여하지 않습니다. 커널은 코어 덤프에 대한 rlimit가 충분히 큰 경우에만 SIGQUIT에 대한 "기본 작업"의 일부로 코어 덤프를 작성합니다. rlimit는limits.conf에 명시된 내용에 따라 로그인을 통해 설정되었거나 ulimit 등을 사용하여 직접 조정되었을 수 있습니다.

나는 "Bash에는 SIGQUIT에 대한 특별한 처리기가 없습니다"라는 것을 잘 이해하지 못합니다.

모든 프로세스에 신호 처리기가 있는 것이 맞습니까? 그 중 일부가 기본값이더라도 일반적으로 프로세스는 fork()부모로부터 신호 처리기를 복사하고 execve()신호 처리기를 변경하지 않는 기본 신호 처리기를 얻습니다.

Bash 프로세스는 기본 신호 처리기/트랩을 어디서 얻나요?

loginAPUE에서는 (또는 시작 순서의 다른 프로그램)이 기본 신호 처리기( 링크 주제의 중심인 getty의 리소스 제한도 포함)를 설정하고 통과하는 첫 번째 프로그램 인지 여부를 찾을 수 없습니다. /etc/security/limits.conf로그인 쉘까지:

올바르게 로그인하면 로그인이 됩니다.

• 홈 디렉토리(chdir)로 변경합니다.

• 터미널 장치(chown)의 소유권을 변경하여 소유하게 합니다.

• 터미널 장치에 대한 액세스 권한을 변경하여 읽고 쓸 수 있는 권한을 갖도록 합니다.

• setgid 및 initgroups를 호출하여 그룹 ID를 설정합니다.

• 홈 디렉터리(HOME), 셸(SHELL), 사용자 이름(USER 및 LOGNAME), 기본 경로(PATH) 등 로그인에 포함된 모든 정보로 환경을 초기화합니다.

• 사용자 ID(setuid)로 변경하고 다음과 같이 로그인 셸을 호출합니다.

execl("/bin/sh", "-sh", (char *)0);

관련 정보