Forum: PC-Programmierung ICANON read laufzeitüberwachen?


von Lars (Gast)


Lesenswert?

Hallo,

mein Programm läuft soweit nun will ich noch etwas gegen evtl auftrete 
Fehler tun.

Ich lese von einer Serielle Schnittstelle mit READ im ICANON Modus, 
dabei ließt er ja so lange bis die Steuerzeichen kommen.

Aber wenn diese nicht kommen??? Wartete er bis ..... Das will ich 
verhindern.

Wie könnte man sowas machen? Das Programm steht ja am read still, also 
kann ich keine schleife laufen lassen die die Zeit misst.

Könnte man nicht sowas mit Threads machen?

Also kurz vor dem Read einen Thread starten in dem die zeit gemessen 
wird, das müsste doch gehn oder?

Lars

von Klaus W. (mfgkw)


Lesenswert?

Man kann sowas mit Threads lösen etwa in der Form, daß ein Thread liest 
(wie gehabt ggf. blockierend) und ein anderer in der Zwischenzeit was 
anderes macht.

Eine andere Variante ist, den Filedeskriptor auf "non blocking" zu 
setzen.
Wenn es nichts zu lesen gibt, springt das read() gleich zurück mit 0 
gelesenen Byte. Daraufhin kann man was anderes machen und es später 
wieder probieren.

Die dritte Variante ist select() (in Unix+Linux+ähnlichen, nicht unter 
Windows bzw. dort nur für sockets).
Dem kann man einen Timeout mitgeben, nachdem nicht mehr länger gewartet 
wird.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.