Verhinderung am schließen der Shell(Konsole) mit STR+C



  • Hallo Leute ich möchte in meiner Shell alle internen ausgeführten Prozesse mit STRG+C beenden wie bei cmd oder cygwin, doch wenn ich diese Tasten drücke wird das ganze konsolenfenster beendet. Wie macht man das, dass nur in der shell ausgeführte befehle beendet werden?



  • SetConsoleCtrlHandler



  • Hab mir folgendes zusammengebastelt:

    #include <windows.h>
    #include <iostream>
    #include <string>
    
    using namespace std;
    
    #pragma comment(lib, "user32.lib")
    
    BOOL WINAPI ConsoleHandler(DWORD CEvent)
    {
        switch(CEvent)
        {
    		case CTRL_C_EVENT: break;
        }
        return TRUE;
    }
    
    int main()
    {
    	string input;
    	do
    	{
    		SetConsoleCtrlHandler(ConsoleHandler, TRUE);
    		cout << "Eingabe:";
    		getline(cin, input);
    
    		//...
    
    	}while(1);
    
    	CloseHandle(ConsoleHandler);
    
    return 0;
    }
    

    Wenn ich z.B. ein befehl ausführe und dann mit STRG+C drücke wird dieser beendet, aber wenn ich nix eingegeben hab und dann die Tasten drücke wird die Prompt unendlich mal ausgegeben, woran liegt das?


Anmelden zum Antworten