cmd-Differenz zwischen quit und exit

1281
rahuldottech

Wenn Sie geben telnetSie cmd ein, müssen Sie geben quitvon dort zu bekommen, aber wenn Sie geben wmic, die beide quitund exitarbeiten werden .

Welcome to Microsoft Telnet Client  Escape Character is 'CTRL+]'  Microsoft Telnet> exit Invalid Command. type ?/help for help Microsoft Telnet> quit  C:\windows\system32> 

C:\windows\system32>wmic wmic:root\cli>quit  C:\windows\system32>  C:\windows\system32>wmic wmic:root\cli>exit  C:\windows\system32> 

Auch Ctrl+Csollte einen laufenden Prozess abzubrechen oder einen Batch - Job zu beenden, sondern Ctrl+Cauch verlassen, wmicaber nicht telnet.

Was ist das Bedürfnis für all diese Verwirrung? Warum kann es nicht nur einen Standard geben?

-1
`wmic` ist ein von Microsoft geschriebenes Produkt. `telnet` läuft auf vielen verschiedenen Betriebssystemen und verfügt über eine gemeinsame Standardbenutzeroberfläche. DavidPostill vor 8 Jahren 4
Lassen Sie mich wissen, wenn Sie zusätzliche Informationen benötigen, oder markieren Sie eine Antwort, wenn eine ausreichende Information bereitgestellt wurde. Abraxas vor 8 Jahren 0

3 Antworten auf die Frage

3
Abraxas

Der Grund dafür ist, dass die Anwendungen getrennt sind. Telnet startet das Programm telnet.exe in Ihrem Terminal, und alles, was Sie eingeben, geschieht in telnet.exe und NICHT in cmd.exe (Ihre Eingabeaufforderung). Ihre Eingabeaufforderung wurde gerade zur Schnittstelle, mit der Sie Telnet-Befehle an Telnet senden.

wmic.exe ist ein separates Programm mit eigenen Befehlen. Es kann einen anderen Exit-Befehl als andere Programme enthalten. Sie können in der Befehlsliste für jedes Programm, das Sie in der Eingabeaufforderung ausführen, nachsehen. Es gibt einige Standards, die jedoch nicht unbedingt erforderlich sind.

Wenn Sie eine Python-Sitzung innerhalb der Eingabeaufforderung starten, unterbricht Ihre Strg + C eine Python-Aktivität, aber exit () wäre der Befehl zum Beenden.

Lassen Sie mich wissen, wenn Sie weitere Erklärungen benötigen, es ist im Grunde nur so, dass jedes Programm (telnet.exe, nslookup.exe, wmic.exe) einen eigenen Satz an Befehlen hat, und diese sind nicht immer standardisiert, da unterschiedliche Entwickler oder Teams oder Änderungen vorgenommen werden im Laufe der Zeit waren an jedem Programm beteiligt.

Wie in einem Kommentar oben erwähnt, ist Telnet auch ein älterer standardisierter Dienst, der von vielen Anbietern verwendet wird. Wmic ist ein von Microsoft entwickeltes Produkt. Dies ist eine weitere Sache, die bei der Suche nach standardisierten Befehlen zu berücksichtigen ist. Beispielsweise wäre es wahrscheinlicher, dass Microsoft Tools entwickelte ( wmic usw. verfügen über standardisierte Befehle, während plattformübergreifende Tools (Telnet, SSH usw.) für alle Plattformen (Mac, * Nix, Windows) gleich sind, jedoch nicht in Übereinstimmung mit den von Apple entwickelten oder von Microsoft entwickelten Common Best Practices.

Warum wird Strg + C von wmic beendet, wenn es sich um einen Abbruchbefehl handelt? rahuldottech vor 8 Jahren 0
Programme werden mit einer spezifischen Antwort auf Abbruch- / Unterbrechungsbefehle codiert. Einige von ihnen benötigen nur Unterbrechungsbefehle, um die Verarbeitung aktueller Argumente zu stoppen (z. B. das Powershell-Skript zu brechen). Andere Befehle behandeln sie möglicherweise als "Zwangsbeendigungsprozess". Dies ist ein weniger sauberes "Quit" (möglicherweise wie ctrl + w oder alt + f4 bei einigen Programmen) Aber auch hier liegt der Code für die spezifische Anwendung, der bestimmt, wie Tastenkombinationen und bestimmte Signale (TERM, KILL, HALT usw.) behandelt werden. Abraxas vor 8 Jahren 0
2
trigger

Here are the Docs from Windows SDK. As to the Why, so programs can tailor how they work Ctrl + C is also character code 3 which is control code etx - end of text. Also remember CMD is just an ordinary console program, like wmic or ftp.

Console Control Handlers

Each console process has its own list of control handler functions that are called by the system when the process receives a CTRL+C, CTRL+BREAK, or CTRL+CLOSE signal. Initially, the list of control handlers for each process contains only a default handler function that calls the ExitProcess function. A console process can add or remove additional HandlerRoutine functions by calling the SetConsoleCtrlHandler function. This function does not affect the lists of control handlers for other processes. When a console process receives any of the control signals, it calls the handler functions on a last-registered, first-called basis until one of the handlers returns TRUE. If none of the handlers returns TRUE, the default handler is called.

The function's dwCtrlType parameter identifies which control signal was received, and the return value indicates whether the signal was handled.

For an example of a control handler function, see Registering a Control Handler Function.

CTRL+C and CTRL+BREAK Signals

The CTRL+C and CTRL+BREAK key combinations receive special handling by console processes. By default, when a console window has the keyboard focus, CTRL+C or CTRL+BREAK is treated as a signal (SIGINT or SIGBREAK) and not as keyboard input. By default, these signals are passed to all console processes that are attached to the console. (Detached processes are not affected.) The system creates a new thread in each client process to handle the event. The thread raises an exception if the process is being debugged. The debugger can handle the exception or continue the exception unhandled.

CTRL+BREAK is always treated as a signal, but an application can change the default CTRL+C behavior in two ways that prevent the handler functions from being called:

The SetConsoleMode function can disable the ENABLE_PROCESSED_INPUT input mode for a console's input buffer, so CTRL+C is reported as keyboard input rather than as a signal.

When SetConsoleCtrlHandler is called with NULL and TRUE values for its parameters, the calling process ignores CTRL+C signals. Normal CTRL+C processing is restored by calling SetConsoleCtrlHandler with NULL and FALSE values. This attribute of ignoring or not ignoring CTRL+C signals is inherited by child processes, but it can be enabled or disabled by any process without affecting existing processes.

CTRL+CLOSE Signal

The system generates a CTRL+CLOSE signal when the user closes a console. All processes attached to the console receive the signal, giving each process an opportunity to clean up before termination. When a process receives this signal, the handler function can take one of the following actions after performing any cleanup operations:

Call ExitProcess to terminate the process.

Return FALSE. If none of the registered handler functions returns TRUE, the default handler terminates the process.

Return TRUE. In this case, no other handler functions are called, and a pop-up dialog box asks the user whether to terminate the process. If the user chooses not to terminate the process, the system does not close the console until the process finally terminates.

Send comments about this topic to Microsoft

Build date: 10/2/2006

2
w17t

Alle quit, qbeenden Sie die telnetShell.

Sowohl exitund quitAustritt aus wmicSchale.

exitbeendet cmd.exe, das ist die Windows-Eingabeaufforderungs-Shell.

Es hängt also davon ab, wo Sie sich befinden und was Sie verlassen, da Muscheln [wie interaktive Programme, die Befehle akzeptieren] und eigene Befehle haben.

-1 Zum letzten Satz schreiben Sie: "Es hängt also davon ab, wo Sie sich befinden und worauf Sie aufhören, da Muscheln ihre eigenen Befehle haben." <-------- Vergewissern Sie sich, dass cmd die Shell ist, die exit verwendet. Aber die Programme sind keine Muscheln. Ob es sich dabei um eine Hülle handelt oder nicht, ist irrelevant. Shells steuern nicht, was die Programme in ihnen zum Beenden verwenden. Außerdem sind 99% der ersten 3 Sätze in seiner Frage ohnehin angegeben. Dann ist Ihre vierte / letzte Zeile sehr irreführend. barlop vor 8 Jahren 0
Um meinen vorherigen Kommentar zu verdeutlichen: Shell hat viele Definitionen, ich beziehe mich auf ein interaktives Programm, das in diesem Kontext Befehle als Shell akzeptiert und die Eingabeaufforderung als Interpreter betrachtet. Ich möchte daraus schließen, dass es keine Standards geben muss, da es viele Anwendungen gibt, die interaktiv Eingaben anstelle von Befehlsschaltern akzeptieren. w17t vor 8 Jahren 1
OK, das ist gut, ich sehe, dass Ihre Definition auch eine Standardeinstellung ist http://www.webopedia.com/TERM/S/shell.html barlop vor 8 Jahren 1