Seite 1 von 1
[gelöst] QFile und Signal readyRead()
Verfasst: 6. September 2008 17:18
von OscarWild
Hallo,
ich möchte unter Linux die Daten eines Device Files auslesen (hier: /dev/midi1), das sporadisch neue Daten liefert. Dabei möchte ich möglichst vermeiden, das File zu pollen - leider emittiert die Klasse QFile im Gegensatz zu ihrer Basisklasse QIODevice das Signal readyRead() aber nicht. Gibts dafür eine (simple) Lösung, oder muss ich doch auf Polling ausweichen?
Gruß + Danke im Voraus
OscarWild
Verfasst: 6. September 2008 18:00
von OscarWild
Lösung selbst gefunden: nachdem Linux nicht zwischen Sockets und Filehandles unterscheidet, kann man einen QSocketNotifier benutzen, der statt dem Socket das Filehandle bekommt. Seltsam, aber es funktioniert.
Warum QFile die Einschränkung hat, kein entsprechendes Signal zu emittieren, verstehe ich beim besten Willen nicht...
Verfasst: 6. September 2008 18:29
von Christian81
OscarWild hat geschrieben:
Warum QFile die Einschränkung hat, kein entsprechendes Signal zu emittieren, verstehe ich beim besten Willen nicht...
Weil das OS es einfach nicht hergibt würde ich sagen.
QFileSystemWatcher wäre auch eine Idee.
Verfasst: 6. September 2008 22:06
von OscarWild
Christian81 hat geschrieben:Weil das OS es einfach nicht hergibt würde ich sagen.
Dann wäre das aber auch nicht konventionell per select(), oder per QSocketNotifier machbar. In einigen Beiträgen im Netz habe ich User gefunden, die das fehlende Signal als Bug bezeichnen - es ist aber ausdrücklich so dokumentiert.
Christian81 hat geschrieben:QFileSystemWatcher wäre auch eine Idee.
Das überwacht ja gleich ein ganzes Verzeichnis, und dürfte ordentlich Last erzeugen.
Verfasst: 6. September 2008 23:18
von Christian81
OscarWild hat geschrieben:
Dann wäre das aber auch nicht konventionell per select(), oder per QSocketNotifier machbar. In einigen Beiträgen im Netz habe ich User gefunden, die das fehlende Signal als Bug bezeichnen - es ist aber ausdrücklich so dokumentiert.
Ok - anders: weil es nicht überall das OS hergibt.
OscarWild hat geschrieben:
Das überwacht ja gleich ein ganzes Verzeichnis, und dürfte ordentlich Last erzeugen.
Bitte nochmal lesen. Das Ding heist nicht QDirWatcher
