ICANON read laufzeitüberwachen?

Gast #3306907
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
#3313355
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren