exec()를 즉시 실행하는 대신 "login"과 "sudo"가 하위 프로세스를 분기하는 이유는 무엇입니까?

exec()를 즉시 실행하는 대신 "login"과 "sudo"가 하위 프로세스를 분기하는 이유는 무엇입니까?

. 에서 장기 실행 명령을 실행했을 때 해당 명령이 프로세스 목록( )에 나타나는 sudo것을 확인했습니다 .sudops

또한 로그인하면 텍스트 콘솔이 login나타나는 것을 확인했습니다.systemctl status "session-${XDG_SESSION_ID}.scope"

왜 별도의 하위 프로세스를 포크합니까? exec()필요한 프로그램(의 경우 쉘)으로 완전히 대체하기 위해 which를 사용하지 않는 이유는 무엇입니까 login? 예를 들어, 이것이 nice작동하는 방식입니다.env

답변1

상위 프로세스 이후에도 정리해야 할 사항이 남아 있습니다. 예를 들어, 로그인 기록의 경우 로그인한 사용자 목록 표시와 같은 작업 man utmp에 어떤 명령이 사용되는지 확인하세요.who

Linux에서는 설정 및 정리 작업이 모두 PAM(플러그형 인증 모듈)에 의해 수행됩니다.

관련 정보