SetConsoleCtrlHandler unter Windows 2003 Server



  • Hallo zusammen,

    ich habe derzeit ein interessantes Phänomen: Ich habe eine Consolen-Anwendung, die mit Ctrl-c beendet werden soll, dort möchte ich jedoch noch dafür sorgen, dass das Log vernünftig beendet wird, weshalb ich SetConsoleCtrlHandler verwende um die Singale abzufangen. Ich habe folgenden Code dafür:

    BOOL WINAPI ConsoleHandler(DWORD event)
    {
    	switch(event)
    	{
    		case CTRL_C_EVENT:
    		cout << "Programm exit due to user-interaction (strg+c)" << endl;
    		myLog->close();
    		exit(1);
    	    return TRUE;
    		break;
    	}
    	return FALSE;
    }
    
    int mainU(int argc, SAP_UC** argv){
    
    	// user-interaction
    	if(SetConsoleCtrlHandler((PHANDLER_ROUTINE)ConsoleHandler, TRUE) == FALSE)
    	{
    		cout << "Can't establish console-event-handler" << endl;
    	}
    
    	...
    

    Als Test- und Entwicklungsumgebung benutze ich meinen PC mit Widowns XP, während der Rechner, auf dem die Anwendung eigentlich laufen soll Windows 2003 Server ist. Wenn ich nun unter XP in der command line ctrl-c drücke wird das Programm korrekt beendet. Unter Windows 2003 Server passiert jedoch nichts. Mache ich bei dem Programm oben etwas falsch oder arbeitet Windows 2003 Server irgendwie anders? 😕

    Viele Dank schonmal 🙂



  • Hallo,

    es ist möglich, dass ein Programm, das auf dem Server installiert ist und auf der XP-Maschine nicht, diese Tastenkombination abfängt (auch wenn man keine Auswirkungen sieht) und somit deine Konsolenanwendung nicht erreicht. Von einer besonderen Server-Behandlung bei dieser Kombination ist mir nichts bekannt.

    MfG,

    Probe-Nutzer


Anmelden zum Antworten