Idee gesucht: Quasi getch() ohne warten !?
-
Mein Problem ist folgendes:
Ich habe ein Tool gebaut, was ununterbrochen Daten vom "Server" empfängt und daher in einer endlosen Schleifen die Daten empfängt und verarbeitet.
Die einzige Möglichkeit das ganze zu beenden ist nun, dass ich einfach auf das kleine "x" oben am Konsolenfenster klicke
getch() ist keine echte Alternative, da das Programm da dann ja anhält... solange können jedoch keine Daten geloggt werden. Und ich möchte auch nicht die ganze Zeit am PC sitzen, um bei jedem Durchlauf zu bestätigen. Zebreche mir schon die ganze Zeit den Kopf, was man da tun könnte. Windows API wäre auch kein Problem...Das was mir jetzt einfiele wäre ganz einfach, nach einer Datei Namens "stop.txt" schauen. Ist soetwas vorhanden, so verlässt er die Schleife... Wobei mir das ganze auf Tastendruck doch lieber wäre. Also verlassen der Schleife nach Drücken der Enter-Taste oder so...
-
weis nicht ob das ansi c ist aber guck dir mal die funktion kbhit() an die macht das was du suchst
schirrmie
-
Wie wärs mit zwei Threads?
-
#include <conio.h> int main(void) { while (/*Dein Schleifenkopf*/) { /* Dein Empfangscode */ ; if (kbhit() && getch() == '(Escape)') break; } printf("Exit"); return 0; }
Ansonsten empfehle ich einen thread für den empfang anzulegen
hat auch den vorteil das im fehlerfall der thread beendet und neu gestartet werden kann
-
Letzteres war die Lösung !!! Dankeschön