pollhup Problem auf pty



  • Hallo
    Ich habe eine pty (master und slave) unter Linux erzeugt, nun habe ich den Filedescriptor des Masters und stelle den Slave zur Verfügung(für externe Programme).

    Also in meinem Programm habe ich eine Schleife die ein poll auf den masterPtyFD macht.
    Extern von meinem Programm habe ich die SlavePTY auf die ein Programm schreiben kann. (z.B. echo "Test" >> /dev/pty/0)

    Soweit geht auch alles ganz gut.
    Mein Programm bekommt mir wenn jemand was auf den Slave schreibt und fängt dann an zu lesen.

    struct pollfd fds = { fd: masterptyFD, events: POLLIN };
    int timeout = 10000;
    while (true) {
        if( poll(&fds,1,timeout) && (fds.revents & POLLIN) ) {
            //lese von dem FD
        }
    }
    

    Problem ist nun nur das, wenn das externe Programm sich beendet, poll nur noch POLLHUP bringt.
    Klar hat das externe Programm ein POLLJUP ausgelöst. Ich will nun aber das poll entweder POLLHUP ignoriert oder den Zustand wieder zurücksetzt.
    Somit wird nach dem ersten POLLHUP in der Schleife sehr viel Rechenzeit verbraten.

    Hat jemand eine Idee wie man das machen kann?


Anmelden zum Antworten