obsługa zamknięcia okna DOS-owego

0

Witam wszystkich:)
W unixie jest taka funkcja jak sigaction() dzięki której mogę ustawić funkcję, która ma się wykonać w przypadku zamknięcia okna. Szukam i nie mogę znaleźć jak to zrobić pod Windows. Jeśli ktoś pomoże będę wdzięczny:)

0

w windowsie nie istnieje okno "dosowe"

0

Może się źle wyraziłem chodzi o to że mam program napisany w C bez funkcji obsługi komunikatów itp czyli uruchamia się w trybie tekstowym i jak tu wychwycić zamknięcie takiego okna?

0

ale czemu miałbyś "wychwytywać" zamknięcie konsoli?

nie możesz po prostu dodać kodu na koniec main? po co tu jakieś zdarzenia skoro program wykonuje się liniowo

co nie znaczy, że się nie da, ale to już będzie niepotrzebne pchanie winapi w kod C

0

Chodzi tutaj o zamknięcie połączenia z serwerem.

0

SetConsoleCtrlHandler - tego szukasz. Callback podany do tej funkcji uruchamia się w osobnym wątku i ma ograniczony czas na działanie.

0
leonidas123 napisał(a)

Chodzi tutaj o zamknięcie połączenia z serwerem.

no to zamknij połączenie przed końcem main, po cholerę tu wpychasz zderzenia? program WYKONUJE SIĘ LINIOWO...

0

Nie do końca rację masz crayze. A nawet wcale nie masz. Żadna sztuka wcisnąć Ctrl+C, albo kliknąć krzyżyk, i nici z twojego zamknięcia połączenia na końcu main:

int main() {
    for(int i=0; i<1000; i++) {
        cout << i << " ";
        Sleep(250);
        }
    MessageBox(0,"Bye","",MB_OK);
    return 0;
    }

sapero dobre rozwiązanie dał.

0

a no bo ja zakładam, że użytkownik nie musi zamykać okna krzyżykiem (nawet nie powinien), zakładam, że program ma liniowo zrobić to co ma zrobić i zamyka połączenie,

jeśli zamykanie krzyżykiem to normalny sposób zamknięcia programu, to ka, mylę się, ale dla mnie zamykanie konsoli przez krzyżyk to jak awaryjne wychodzenie z programu...

0

No i 100% racji, normalnie tak to wygląda.

Jakkolwiek ja swój serwer testowy też tak właśnie pisałem ;) To znaczy miałem kilka wątków, zero interakcji z użytkownikiem, na konsolę komunikaty szły. A zamykanie to najwyżej komendą przez socket, albo krzyżyk ;)

Zaleta? Taki konsolowy serwer można uruchomić ręcznie, ale też banalnie uruchomić w tle, przekierować stdout i mieć logowanie.

0

sapero dzięki:) musiało takie coś być. Dobra próbuję i zobaczymy co wyjdzie. Pozdrawiam!!

1 użytkowników online, w tym zalogowanych: 0, gości: 1