[Lugbz-list] serial read in thread
Andreas Kofler
andreas.kofler at gmx.net
Mon Mar 31 12:09:42 CEST 2008
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
More information about the Lugbz-list
mailing list