[Lugbz-list] serial read in thread
Dietrich Pescoller
diti24 at gmx.de
Mon Mar 31 11:55:14 CEST 2008
On Monday 31 March 2008 12:09:42 Andreas Kofler wrote:
> On Monday 31 Mar 2008, Dietrich Pescoller wrote:
> > Hallo, ich habe folgendes C program was daten über die serielle
> > schnittstellen mit einem device ausstauscht... Das C programm arbeitet
> > als master er sendet fragen zum device und wartet auf die antwort.
> >
> > void read_thread()
> > {
> > read(...antwort...)
> > }
> >
> >
> > main()
> > {
> > create(read_thread())
> > write(data...)
> > while(timeout)
> > {
> > destroy(thread);
> > }
> > }
> >
> > Das problem ist das das Programm terminiert mit dem message I/O possible.
> >
> > Nach einigem googlen habe ich folgendes verstanden: I/O possible ist eine
> > folge vom SIGIO. Praktisch wird dem prozess signalisiert das daten
> > verfügbar sind. Warscheinlich wird dieses Signal nur zum hauptprozess
> > geliefert und nicht zum thread und so hat man einen ungehandeltes signal
> > was den prozess terminiert...
>
> Hallo,
> SIGIO dient zur asynchronen E/A, wenn du diese Art der Abarbeitung wählst,
> dürfte der Thread hinfällig sein.
> Hast du beim Öffnen nzb mit fcntl das ASYNC-Flag gesetzt ?
> Wenn ja, versuch es ohne oder installier den Signalhandler(SIGIO) mit
> entsprechender Leseroutine.
>
> ~ andi
>
Hallo,
danke für den Hinweis, ja ohne async funktioniert das ohne probleme. Das ganze
kommt von einer modbus library. Momentan habe ich das so gelöste hoffe das
hat nicht andere folgen...
Danke
diti
>
>
> _______________________________________________
> http://www.lugbz.org/mailman/listinfo/lugbz-list
More information about the Lugbz-list
mailing list