Como kinokijufdito, o Windows não é Unix. No Unices e Linux, shutdownestá realmente envolvido no processo de desligamento completo. É o programa que envia mensagens de aviso regulares aos usuários que efetuaram login e que grava o /run/nologinarquivo para impedir o logon adicional pouco antes do horário de desligamento programado.
No Windows NT, esse não é o caso.
A ação "Desligar" no "botão liga / desliga" no menu Iniciar do Windows Explorer, a opção de menu "Desligar" no Gerenciador de Tarefas, REBOOT /Sno TCC ou no Take Command e em outros aplicativos que permitem desligar o sistema durante o desligamento. chamando diretamente uma das duas chamadas da API do Win32: InitiateSystemShutdownEx()ou ExitWindowsEx(). Eles não fazem as coisas indiretamente executando o shutdownprograma. (Isso realmente precisa de mais código do que apenas chamar a chamada da API do Win32.) O shutdownprograma, quando alguém está fazendo um desligamento local, também chama as mesmas chamadas da API do Win32.
É verdade winlogon, csrsse smssque são os programas que desligar o Windows NT. Em particular, é o winlogonque faz o trabalho principal de processar solicitações de desligamento diferido.
Você é verdadeiramente um respondedor sensato! Gostei da maneira como você se identificou com a situação real através do meu perfil.
Mukul Kumar 15/03
Observe que nos sistemas Linux, o shutdowncomando não está envolvido no processo de desligamento completo; Embora ele possa enviar mensagens de aviso ou tocar / executar / nologin, tudo o que faz em relação ao desligamento é enviar o comando apropriado para systemd, init, etc. e sair. O processo init ou seu moderno sistema de substituição realmente faz o trabalho de desligar o sistema.
Michael Hampton
Não. M. Hampton, enviar as mensagens e interromper logons é uma parte completa do procedimento de desligamento completo. Não pense que ele desapareceu magicamente com o Linux. As páginas de manual para dois Linux shutdowns estão bem na sua frente. Pensando que isso é tão errado quanto o absurdo na Introdução ao Linux no TLDP, que diz que "o UNIX não foi feito para ser desligado". O UNIX foi realmente feito para ser desligado e há muitos livros nos últimos 40 anos para profissionais do UNIX que cobrem todo o procedimento, com mensagens de aviso aos usuários como etapa 1.
JdeBP
Existem até livros para profissionais de Linux. Eu ligaria o LPIC Study Guide de Rod Smith , que tem shutdownna página 22, mas não está na minha biblioteca. Desculpe, M. Smith. (-: Minha biblioteca possui nomes como o SVR5 Reference do Coffin (a etapa de aviso aos usuários descrita nas páginas 355 e 683), um Guia do Administrador do Sistema SCO UNIX (avisos aos usuários como primeira etapa de desligamento nas páginas 52–53) e até a Fielder / Hunter UNIX Administração do Sistema (todo o capítulo 6 é sobre o desligamento, com usuários de advertência no início do capítulo) pode-se encontrar muitos mais livros para profissionais que cobrem isso..
JdeBP
55
Não.
O Explorer não chama esse comando quando você desliga no menu Iniciar.
É possível desligar o sistema com uma chamada da API do Win32 (a resposta do @ JdeBP fornece ótimos detalhes sobre isso, se estiver interessado). O comando é apenas uma maneira conveniente de fazer isso a partir de um script, tarefa agendada ou na caixa de diálogo Executar.
Na verdade, shutdown.exenem faz um desligamento normal.
kinokijuf
Cuidado com essa resposta! O Explorer não chama esse comando, mas outros processos que desligam ou reiniciam o Windows: e não é apenas 'uma maneira conveniente de fazê-lo' se o script ou a tarefa agendada for um instalador ou uma tarefa agendada de manutenção do seu sysadmin.
Nigel Heffernan 14/03
11
Isso não torna "necessário", Nilo. Veja o contexto da pergunta (que não está na pergunta, mas está na minha resposta e no que é apontado para ela) para a refutação que o questionador estava questionando e a declaração sobre o shutdownque o questionador fez originalmente. (Essas partes dos) instaladores geralmente são escritos em linguagens compiladas que apenas chamam a API do Win32, a propósito.
JdeBP
8
Conforme explicado pelo ultrasawblade (upvote), o desligamento do sistema é uma chamada da API do Win32 para: ExitWindowsEx
O link também tem um exemplo de como implementar um desligamento a partir de C. Além disso, você pode fazê-lo em C # usando P / Invoke (Platform Invoke). O pinvoke.net tem várias assinaturas disponíveis para uso: http://www.pinvoke.net/default.aspx/user32/exitwindowsex.html
shutdown -s -t 0
- uma planícieshutdown
exibe apenas ajuda.Respostas:
É claro que sua pergunta se origina da sua resposta em https://codegolf.stackexchange.com/a/24011/18907 , em particular do
kinokijuf
comentário da revisão inicial da sua resposta.Como
kinokijuf
dito, o Windows não é Unix. No Unices e Linux,shutdown
está realmente envolvido no processo de desligamento completo. É o programa que envia mensagens de aviso regulares aos usuários que efetuaram login e que grava o/run/nologin
arquivo para impedir o logon adicional pouco antes do horário de desligamento programado.No Windows NT, esse não é o caso.
A ação "Desligar" no "botão liga / desliga" no menu Iniciar do Windows Explorer, a opção de menu "Desligar" no Gerenciador de Tarefas,
REBOOT /S
no TCC ou no Take Command e em outros aplicativos que permitem desligar o sistema durante o desligamento. chamando diretamente uma das duas chamadas da API do Win32:InitiateSystemShutdownEx()
ouExitWindowsEx()
. Eles não fazem as coisas indiretamente executando oshutdown
programa. (Isso realmente precisa de mais código do que apenas chamar a chamada da API do Win32.) Oshutdown
programa, quando alguém está fazendo um desligamento local, também chama as mesmas chamadas da API do Win32.É verdade
winlogon
,csrss
esmss
que são os programas que desligar o Windows NT. Em particular, é owinlogon
que faz o trabalho principal de processar solicitações de desligamento diferido.Leitura adicional
shutdown
. Páginas de manual do FreeBSD 9.2 . 19/03/2013.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 Command / TCC. JP Software.fonte
shutdown
comando não está envolvido no processo de desligamento completo; Embora ele possa enviar mensagens de aviso ou tocar / executar / nologin, tudo o que faz em relação ao desligamento é enviar o comando apropriado para systemd, init, etc. e sair. O processo init ou seu moderno sistema de substituição realmente faz o trabalho de desligar o sistema.shutdown
s estão bem na sua frente. Pensando que isso é tão errado quanto o absurdo na Introdução ao Linux no TLDP, que diz que "o UNIX não foi feito para ser desligado". O UNIX foi realmente feito para ser desligado e há muitos livros nos últimos 40 anos para profissionais do UNIX que cobrem todo o procedimento, com mensagens de aviso aos usuários como etapa 1.shutdown
na página 22, mas não está na minha biblioteca. Desculpe, M. Smith. (-: Minha biblioteca possui nomes como o SVR5 Reference do Coffin (a etapa de aviso aos usuários descrita nas páginas 355 e 683), um Guia do Administrador do Sistema SCO UNIX (avisos aos usuários como primeira etapa de desligamento nas páginas 52–53) e até a Fielder / Hunter UNIX Administração do Sistema (todo o capítulo 6 é sobre o desligamento, com usuários de advertência no início do capítulo) pode-se encontrar muitos mais livros para profissionais que cobrem isso..Não.
O Explorer não chama esse comando quando você desliga no menu Iniciar.
É possível desligar o sistema com uma chamada da API do Win32 (a resposta do @ JdeBP fornece ótimos detalhes sobre isso, se estiver interessado). O comando é apenas uma maneira conveniente de fazer isso a partir de um script, tarefa agendada ou na caixa de diálogo Executar.
fonte
shutdown.exe
nem faz um desligamento normal.shutdown
que o questionador fez originalmente. (Essas partes dos) instaladores geralmente são escritos em linguagens compiladas que apenas chamam a API do Win32, a propósito.Conforme explicado pelo ultrasawblade (upvote), o desligamento do sistema é uma chamada da API do Win32 para: ExitWindowsEx
O link também tem um exemplo de como implementar um desligamento a partir de C. Além disso, você pode fazê-lo em C # usando P / Invoke (Platform Invoke). O pinvoke.net tem várias assinaturas disponíveis para uso: http://www.pinvoke.net/default.aspx/user32/exitwindowsex.html
fonte
Não é necessário.
shutdown.exe
é apenas um utilitário para desligar um computador local ou remoto. Parece queshutdown.exe
os usos da API nativa doNtShutdownsystem
. Enquanto o Windows usaExitWindowsEx
( como já mencionado ).fonte