Por que 'login' e 'sudo' separam um processo filho e não exec () imediatamente?

1

Quando executei um comando de longa execução em sudo , notei que sudo apareceu na lista de processos ( ps ).

Ao mesmo tempo, notei que login aparece em systemctl status "session-${XDG_SESSION_ID}.scope" quando você faz login no console de texto.

Por que eles processam um processo filho separado? Por que eles não usam exec() que se substituem inteiramente, com o programa desejado (um shell, no caso de login )? É assim que nice e env funcionam, por exemplo.

    
por sourcejedi 21.09.2017 / 22:49

1 resposta

0

O processo pai tem coisas para limpar depois. Por exemplo. para os registros de login, consulte man utmp , que é usado para comandos como who para mostrar a lista de usuários conectados.

No Linux, as ações de configuração e limpeza são executadas por Pluggable Authentication Modules (PAM).

    
por 21.09.2017 / 22:49

Tags