cmd-Diferença entre sair e sair

-1

Se você digitar telnet em cmd, precisará digitar quit para sair de lá, mas se digitar wmic , tanto quit como exit funcionarão.

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>

Além disso, Ctrl+C deve interromper um processo em execução ou encerrar um trabalho em lotes, mas Ctrl+C também sairá de wmic , mas não de telnet .

Qual é a necessidade de toda essa confusão? Por que não pode haver apenas um padrão ??

    
por rahuldottech 19.06.2015 / 19:36

3 respostas

3

A razão para isso é que os aplicativos são separados. Telnet lança o programa telnet.exe em seu terminal e tudo que você digita acontece dentro de telnet.exe e NÃO dentro de cmd.exe (seu prompt de comando) Seu prompt de comando acaba de se tornar a interface com a qual você envia comandos telnet para telnet.

O wmic.exe é um programa separado, com seu próprio conjunto de comandos, que pode ter um comando de saída diferente dos outros programas. Você pode olhar para a lista de comandos para cada programa que você executa no prompt de comando e existem alguns padrões, mas eles não são 'por necessidade'.

Se você fosse iniciar uma sessão python dentro do prompt de comando, seu ctrl + c iria quebrar uma atividade do python, mas exit () seria o comando a ser executado para sair.

Deixe-me saber se você precisa de mais explicações do que isso, é basicamente que cada programa (telnet.exe, nslookup.exe, wmic.exe) tem seu próprio conjunto de comandos e nem sempre são padronizados porque desenvolvedores ou equipes ou mudanças ao longo do tempo foram envolvidas com cada programa.

Como observado em um comentário acima, o telnet também é um serviço padronizado usado por muitos fornecedores, enquanto o wmic é um produto desenvolvido pela Microsoft, isso é outra coisa a considerar ao examinar comandos padronizados - por exemplo, seria mais provável que a Microsoft As ferramentas desenvolvidas (wmic, etc) possuem comandos padronizados, enquanto as ferramentas de plataforma cruzada (telnet, ssh, etc) se comportam da mesma forma em plataformas (Mac, * nix, Windows), mas não de acordo com as práticas recomendadas / desenvolvidas pela Apple. / p>     

por 19.06.2015 / 19:44
2

Aqui estão os documentos do SDK do Windows. Quanto ao Por que , os programas podem adaptar como funcionam Ctrl + C também é o código de caractere 3, que é código de controle etx - fim do texto. Lembre-se também que CMD é apenas um programa de console comum, como wmic ou 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

    
por 21.06.2015 / 01:54
2

Todos os quit , q saem de telnet shell.

Tanto exit como quit saem de wmic shell.

exit sai do cmd.exe , que é o shell Prompt de Comando do Windows.

Então, depende de onde você está e do que você está saindo, pois shells [como em programas interativos aceitam comandos] têm seus próprios comandos.

    
por 24.06.2015 / 16:37