ölgötz
Grünschnabel
Hallo,
ich bin neu in der Linux-und C-Programmierung und hab' mir folgendes Progrämmchen gebastelt:
Ein Programm in C, das nach dem Programmstart eine Datei anlegt und dann in einer Endlosschleife den LPT-Port und den seriellen Port abfragt. Wenn auf einem der beiden Ports was passiert, dann wird dieses Ereignis zusammen mit der exakten Zeit in die Datei geschrieben ... daneben passieren noch ein paar andere Dinge, aber die spielen für meine Frage hier gerade keine Rolle ...
Mein Problem ist jetzt, dass ich das Programm derzeit mit Strg+C abbreche. Deswegen komme ich nicht zum closef(), das den Datenfile anständig schreibt und schließt und folgerichtig ist der angelegte File immer leer.
Jetzt könnte ich eine Tastaturabfrage in die Schleife einbauen, um das Programm sauber zu beenden. Aber getchar() geht nicht, weil das Programm an der Stelle stehen bleiben und auf eine Eingabe warten würde. Meine Frage daher: Gibt es irgend eine andere Möglichkeit, eine Tastatureingabe nur dann abzufangen, wenn tatsächlich eine bestimmte Taste gedrückt wird und wenn keine gedrückt wird, läuft das Programm einfach weiter ?
... Ich vermute, dass ich, wenn ich eine GUI verwenden würde, ich wahrscheinlich Funktionen zur Verfügung gestellt bekommen würde, die die Tastaturereognisse abfangen würden, mir genügt aber vorerst das Arbeiten und die Bildschirmausgabe mit der bash - deswegen suche ich eine Lösung, die ohne QT oder ähnlichem auskommt.
Kann mir da jemand einen Tipp geben?
PS: Ich hab' gerade gemerkt, dass sich das Problem mit der leeren Datei relativ einfach lösen lästt, wenn man von Zeit zu Zeit fflush(); aufruft ... An der Frage nach dem Abfangen der Tastaturereignisse wäre ich aber weiterhin interessiert ...
Viele Grüße,
Ö
ich bin neu in der Linux-und C-Programmierung und hab' mir folgendes Progrämmchen gebastelt:
Ein Programm in C, das nach dem Programmstart eine Datei anlegt und dann in einer Endlosschleife den LPT-Port und den seriellen Port abfragt. Wenn auf einem der beiden Ports was passiert, dann wird dieses Ereignis zusammen mit der exakten Zeit in die Datei geschrieben ... daneben passieren noch ein paar andere Dinge, aber die spielen für meine Frage hier gerade keine Rolle ...
Mein Problem ist jetzt, dass ich das Programm derzeit mit Strg+C abbreche. Deswegen komme ich nicht zum closef(), das den Datenfile anständig schreibt und schließt und folgerichtig ist der angelegte File immer leer.
Jetzt könnte ich eine Tastaturabfrage in die Schleife einbauen, um das Programm sauber zu beenden. Aber getchar() geht nicht, weil das Programm an der Stelle stehen bleiben und auf eine Eingabe warten würde. Meine Frage daher: Gibt es irgend eine andere Möglichkeit, eine Tastatureingabe nur dann abzufangen, wenn tatsächlich eine bestimmte Taste gedrückt wird und wenn keine gedrückt wird, läuft das Programm einfach weiter ?
... Ich vermute, dass ich, wenn ich eine GUI verwenden würde, ich wahrscheinlich Funktionen zur Verfügung gestellt bekommen würde, die die Tastaturereognisse abfangen würden, mir genügt aber vorerst das Arbeiten und die Bildschirmausgabe mit der bash - deswegen suche ich eine Lösung, die ohne QT oder ähnlichem auskommt.
Kann mir da jemand einen Tipp geben?
PS: Ich hab' gerade gemerkt, dass sich das Problem mit der leeren Datei relativ einfach lösen lästt, wenn man von Zeit zu Zeit fflush(); aufruft ... An der Frage nach dem Abfangen der Tastaturereignisse wäre ich aber weiterhin interessiert ...
Viele Grüße,
Ö
Zuletzt bearbeitet: