Débrancher l'ordinateur devrait l'éteindre, peu importe le nom du fichier.
David Starkey
7
@ DavidStarkey: "Arrêter" et "Arrêter" ne sont cependant pas la même chose.
Courses de légèreté avec Monica
Réponses:
31
Votre question provient bien sûr de votre réponse sur https://codegolf.stackexchange.com/a/24011/18907 , en particulier de votre kinokijufcommentaire sur la révision initiale de votre réponse.
Comme kinokijufdit, Windows n'est pas Unix. Sur Unices et Linux, shutdownest en effet impliqué dans le processus d'arrêt complet. C'est le programme qui envoie des messages d'avertissement réguliers aux utilisateurs connectés et qui écrit le /run/nologinfichier afin d'empêcher toute nouvelle connexion peu de temps avant l'heure d'arrêt prévue.
Sous Windows NT, ce n'est pas le cas.
L'action "Arrêter" sur le "bouton d'alimentation" du menu Démarrer de l'Explorateur Windows, l'option de menu "Arrêter" du Gestionnaire des tâches, REBOOT /Sde TCC ou de Take Command, ainsi que d'autres programmes d'application vous permettant d'éteindre le système. en appelant directement l'un des deux appels d'API Win32: InitiateSystemShutdownEx()ou ExitWindowsEx(). Ils ne font pas les choses indirectement en exécutant le shutdownprogramme. (Cela nécessite en réalité plus de code que d'appeler simplement l'appel de l'API Win32.) Le shutdownprogramme, lorsqu'il effectue un arrêt local, appelle également ces mêmes appels de l'API Win32.
C'est en fait winlogon, csrsset smssce sont les programmes qui ferment Windows NT. En particulier, c’est winlogonl’essentiel du travail de traitement des demandes d’arrêt différé.
Vous êtes vraiment un interlocuteur sensé! J'ai aimé la façon dont vous avez retracé la situation réelle à travers mon profil.
Mukul Kumar
Notez que sur les systèmes Linux, la shutdowncommande n'est pas du tout impliquée dans le processus d'arrêt complet; s'il peut envoyer des messages d'avertissement ou toucher / exécuter / nologin, tout ce qu'il fait pour arrêter réellement consiste à envoyer la commande appropriée à systemd, init, etc., et à quitter. Le processus init ou son système de remplacement moderne effectue en réalité le travail d’arrêt du système.
Michael Hampton
Non, M. Hampton, l’envoi des messages et l’arrêt des ouvertures de session font partie intégrante de la procédure d’arrêt complet. N'allez pas penser que Linux a disparu comme par magie. Les pages de manuel de deux Linux shutdownsont sous vos yeux. Penser cela est aussi faux que le non-sens de l' introduction de Linux à TLDP qui dit que "UNIX n'est pas fait pour être arrêté". UNIX a en effet été conçu pour être fermé. Il existe de nombreux ouvrages au cours des 40 dernières années pour les professionnels UNIX qui couvrent toute la procédure, avec des messages d'avertissement destinés aux utilisateurs constituant la première étape.
JdeBP
Il y a même des livres pour les professionnels de Linux. Je brancherais le guide d’étude LPIC de Rod Smith , qui se trouve shutdownà la page 22, mais ce n’est pas dans ma bibliothèque. Désolé, M. Smith. (-: Ma bibliothèque contient des éléments tels que la référence SVR5 de Coffin (l’étape de mise en garde des utilisateurs décrite aux pages 355 et 683), un Guide de l’administrateur système SCO UNIX (avertissements destinés aux utilisateurs lors de la première étape de la fermeture, pages 52–53), et même de Fielder / L' administration système UNIX de Hunter (l'intégralité du chapitre 6 concerne l'arrêt, avec des avertissements aux utilisateurs au début du chapitre). On peut trouver de nombreux autres livres destinés aux professionnels couvrant ce sujet.
JdeBP
55
Non.
Explorer n'appelle pas cette commande lorsque vous quittez le menu Démarrer.
Il est possible d'arrêter le système avec un appel d'API Win32 (la réponse de @ JdeBP fournit d'excellents détails à ce sujet si cela vous intéresse). La commande est juste un moyen pratique de le faire à partir d'un script, d'une tâche planifiée ou de la boîte de dialogue Exécuter.
En fait, shutdown.exene fait même pas un arrêt gracieux.
kinokijuf
Attention à cette réponse! Explorer n'appelle pas cette commande, contrairement aux autres processus qui arrêtent ou redémarrent Windows: ce n'est pas simplement un moyen pratique de le faire si le script ou la tâche planifiée est un programme d'installation ou une tâche de maintenance planifiée de votre administrateur système.
Nigel Heffernan
1
Cela ne le rend pas "nécessaire", Nil. Voir le contexte de la question (qui ne figure pas dans la question, mais qui se trouve dans ma réponse et ce qui y est indiqué) pour la réfutation que l'interrogateur posait et son énoncé à shutdownl'origine. (Ces parties de) les programmes d'installation sont souvent écrits dans des langages compilés qui appellent simplement l'API Win32, soit dit en passant.
JdeBP
8
Comme expliqué par ultrasawblade (vote ascendant), l’arrêt du système est un appel de l’API Win32 à: ExitWindowsEx
Le lien contient également un exemple sur la façon d'implémenter un arrêt depuis C. Vous pouvez également le faire depuis C # en utilisant P / Invoke (Platform Invoke). pinvoke.net a un tas de signatures disponibles pour utilisation: http://www.pinvoke.net/default.aspx/user32/exitwindowsex.html
shutdown -s -t 0
- une simpleshutdown
affiche uniquement l'aide.Réponses:
Votre question provient bien sûr de votre réponse sur https://codegolf.stackexchange.com/a/24011/18907 , en particulier de votre
kinokijuf
commentaire sur la révision initiale de votre réponse.Comme
kinokijuf
dit, Windows n'est pas Unix. Sur Unices et Linux,shutdown
est en effet impliqué dans le processus d'arrêt complet. C'est le programme qui envoie des messages d'avertissement réguliers aux utilisateurs connectés et qui écrit le/run/nologin
fichier afin d'empêcher toute nouvelle connexion peu de temps avant l'heure d'arrêt prévue.Sous Windows NT, ce n'est pas le cas.
L'action "Arrêter" sur le "bouton d'alimentation" du menu Démarrer de l'Explorateur Windows, l'option de menu "Arrêter" du Gestionnaire des tâches,
REBOOT /S
de TCC ou de Take Command, ainsi que d'autres programmes d'application vous permettant d'éteindre le système. en appelant directement l'un des deux appels d'API Win32:InitiateSystemShutdownEx()
ouExitWindowsEx()
. Ils ne font pas les choses indirectement en exécutant leshutdown
programme. (Cela nécessite en réalité plus de code que d'appeler simplement l'appel de l'API Win32.) Leshutdown
programme, lorsqu'il effectue un arrêt local, appelle également ces mêmes appels de l'API Win32.C'est en fait
winlogon
,csrss
etsmss
ce sont les programmes qui ferment Windows NT. En particulier, c’estwinlogon
l’essentiel du travail de traitement des demandes d’arrêt différé.Lectures complémentaires
shutdown
. FreeBSD 9.2 pages de manuel . 2013-03-19.shutdown
.systemd
pages de manuel . 2013. Freedesktop.org.shutdown
.upstart
pages de manuel . 2009. Canonical Ltd.InitiateSystemShutdownEx
. MSDN. Microsoft Corporation.ExitWindowsEx
. MSDN. Microsoft Corporation.REBOOT
. Prise de commande / Aide TCC. Logiciel JP.la source
shutdown
commande n'est pas du tout impliquée dans le processus d'arrêt complet; s'il peut envoyer des messages d'avertissement ou toucher / exécuter / nologin, tout ce qu'il fait pour arrêter réellement consiste à envoyer la commande appropriée à systemd, init, etc., et à quitter. Le processus init ou son système de remplacement moderne effectue en réalité le travail d’arrêt du système.shutdown
sont sous vos yeux. Penser cela est aussi faux que le non-sens de l' introduction de Linux à TLDP qui dit que "UNIX n'est pas fait pour être arrêté". UNIX a en effet été conçu pour être fermé. Il existe de nombreux ouvrages au cours des 40 dernières années pour les professionnels UNIX qui couvrent toute la procédure, avec des messages d'avertissement destinés aux utilisateurs constituant la première étape.shutdown
à la page 22, mais ce n’est pas dans ma bibliothèque. Désolé, M. Smith. (-: Ma bibliothèque contient des éléments tels que la référence SVR5 de Coffin (l’étape de mise en garde des utilisateurs décrite aux pages 355 et 683), un Guide de l’administrateur système SCO UNIX (avertissements destinés aux utilisateurs lors de la première étape de la fermeture, pages 52–53), et même de Fielder / L' administration système UNIX de Hunter (l'intégralité du chapitre 6 concerne l'arrêt, avec des avertissements aux utilisateurs au début du chapitre). On peut trouver de nombreux autres livres destinés aux professionnels couvrant ce sujet.Non.
Explorer n'appelle pas cette commande lorsque vous quittez le menu Démarrer.
Il est possible d'arrêter le système avec un appel d'API Win32 (la réponse de @ JdeBP fournit d'excellents détails à ce sujet si cela vous intéresse). La commande est juste un moyen pratique de le faire à partir d'un script, d'une tâche planifiée ou de la boîte de dialogue Exécuter.
la source
shutdown.exe
ne fait même pas un arrêt gracieux.shutdown
l'origine. (Ces parties de) les programmes d'installation sont souvent écrits dans des langages compilés qui appellent simplement l'API Win32, soit dit en passant.Comme expliqué par ultrasawblade (vote ascendant), l’arrêt du système est un appel de l’API Win32 à: ExitWindowsEx
Le lien contient également un exemple sur la façon d'implémenter un arrêt depuis C. Vous pouvez également le faire depuis C # en utilisant P / Invoke (Platform Invoke). pinvoke.net a un tas de signatures disponibles pour utilisation: http://www.pinvoke.net/default.aspx/user32/exitwindowsex.html
la source
Ce n'est pas nécessaire.
shutdown.exe
est juste un utilitaire pour éteindre un ordinateur local ou distant. Il ressembleshutdown.exe
utilise les API native « sNtShutdownsystem
. Alors que Windows utiliseExitWindowsEx
( comme déjà mentionné ).la source