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
[gelöst] QFile und Signal readyRead()
[gelöst] QFile und Signal readyRead()
Zuletzt geändert von OscarWild am 6. September 2008 18:01, insgesamt 1-mal geändert.
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...
Warum QFile die Einschränkung hat, kein entsprechendes Signal zu emittieren, verstehe ich beim besten Willen nicht...
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Weil das OS es einfach nicht hergibt würde ich sagen.OscarWild hat geschrieben: Warum QFile die Einschränkung hat, kein entsprechendes Signal zu emittieren, verstehe ich beim besten Willen nicht...
QFileSystemWatcher wäre auch eine Idee.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
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:Weil das OS es einfach nicht hergibt würde ich sagen.
Das überwacht ja gleich ein ganzes Verzeichnis, und dürfte ordentlich Last erzeugen.Christian81 hat geschrieben:QFileSystemWatcher wäre auch eine Idee.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Ok - anders: weil es nicht überall das OS hergibt.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.
Bitte nochmal lesen. Das Ding heist nicht QDirWatcherOscarWild hat geschrieben: Das überwacht ja gleich ein ganzes Verzeichnis, und dürfte ordentlich Last erzeugen.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung