A sua pergunta é originária da sua resposta no link , em particular do comentário de kinokijuf
sobre a revisão inicial da sua resposta.
Como kinokijuf
disse, o Windows não é Unix. No Unices e Linux, shutdown
está de fato envolvido no processo de desligamento completo. É o programa que envia mensagens de aviso regulares para os usuários que efetuaram login e que grava o arquivo /run/nologin
para evitar mais logon um pouco antes do horário de encerramento programado.
No Windows NT, esse não é o caso.
A ação "Encerrar" no "botão liga / desliga" no menu Iniciar do Windows Explorer, na opção de menu "Encerrar" no Gerenciador de Tarefas, REBOOT /S
no TCC ou no Take Command e em outros aplicativos que permitem a você fechar o sistema desligado inicia o desligamento chamando diretamente uma das duas chamadas da API do Win32: InitiateSystemShutdownEx()
ou ExitWindowsEx()
. Eles não fazem coisas indiretamente executando o programa shutdown
. (Isso realmente precisa de mais código para fazer do que apenas chamar a chamada da API do Win32.) O programa shutdown
, quando um está fazendo um desligamento local, chama essas mesmas chamadas de API do Win32 também.
Na verdade, são winlogon
, csrss
e smss
que são os programas que desligam o Windows NT. Em particular, é winlogon
que faz o trabalho principal de processar pedidos de encerramento adiados.
Leitura adicional
- Jonathan de Boyne Pollard (2006). O processo de encerramento do Windows NT 6 . Respostas frequentemente dadas.
-
shutdown
. Páginas de manual do FreeBSD 9.2 . 2013-03-19. -
shutdown
.systemd
páginas de manual . 2013. Freedesktop.org. -
shutdown
.upstart
páginas de manual . 2009. Canonical Ltd. -
InitiateSystemShutdownEx
. MSDN. Corporação Microsoft. -
ExitWindowsEx
. MSDN. Corporação Microsoft. -
REBOOT
. Tome a ajuda do comando / TCC. Software JP.