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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.