Erkennen, ob ein Zeichengerät unter Linux mit termios api (c ++) die Verbindung getrennt hat

Ich verwende die Termios API in Linux, um mit einem seriellen Gerät zu kommunizieren. Ich versuche zu erkennen, ob das Gerät getrennt wurde, damit ich nach einer gewissen Zeit versuchen kann, die Verbindung wiederherzustellen. Ich habe den folgenden Beispielcode:

while(1)
{
    FD_ZERO(&rfds);
    FD_SET(tty_fd, &rfds);

    // have tried checking fcntl(tty_fd, F_GETFL); too

    // Blocking call to wait until we have data
    select(tty_fd+1, &rfds, NULL, NULL, NULL);

    // While we have data, collect it
    while (read(tty_fd, &c, 1)>0 && bytesRead++<200)
    {
        serialBuffer.push_back(c);
    }

    bytesRead = 0;

    // Try to parse it
    BufferParse();
}

Es wird nicht angezeigt, dass select () oder fcntl Fehlerwerte (-1) zurückgeben, nachdem das ttyUSB-Gerät physisch getrennt wurde. Natürlich konnte ich überprüfen, ob die Datei in / dev / vorhanden ist, aber ich hatte gehofft, dass es eine elegantere Lösung gibt.

Würde mich über jeden Rat freuen, danke!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage