[gelöst] QFile und Signal readyRead()

Alles rund um die Programmierung mit Qt
Antworten
OscarWild
Beiträge: 54
Registriert: 19. Juni 2006 19:59

[gelöst] QFile und Signal readyRead()

Beitrag 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
Zuletzt geändert von OscarWild am 6. September 2008 18:01, insgesamt 1-mal geändert.
OscarWild
Beiträge: 54
Registriert: 19. Juni 2006 19:59

Beitrag 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...
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
OscarWild
Beiträge: 54
Registriert: 19. Juni 2006 19:59

Beitrag 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.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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 :D
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten