Toon posts:

[linux-c] Tegelijk wachten op user input en...

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben sinds heel kort begonnen met C onder Linux, maar aangezien ik al jaren programmeer en script (begonnen in basic, toen de visuele versie hiervan en een jaar PHP) moet dit niet zo'n gigantische kluif zijn. PHP is tenslotte een scripttaal afgeleid van C..

Nu wil ik direct maar goed beginnen en een interface voor MPG123 bouwen, die luistert naar inkomende signalen van LIRC (infrarood) en tegelijkertijd iedere n seconden een LCDtje update met informatie betrekkende dit projectje.

Ik heb al eventjes de docu's op www.lirc.org zitten doorpluizen en kennelijk is het binnenhalen en verwerken van signalen niet zo heel ingewikkeld en ook heb ik al de source van een simpel 'sysinfo-op-je-lcd' progje gelezen en dat kan natuurlijk wel gekopieerd..

Nu mijn grote vraag:
Hoe kan ik (mbv 1 process) wachten op signalen van de remote (zonder dat de load van mijn proc. de lucht in schiet) en tegelijkertijd om de n seconden een LCDtje updaten? Of korter gezegt: wachten op input en iedere n seconden een functie uitvoeren.. :?

Ik heb al veel gelezen, maar kom er nog niet echt uit..
Bvd,

edit:
typo :(

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

fork() of threads??

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
Ok, daar heb ik iets om ff aan te pakken..
Ik heb namelijk geen idee wat dat zijn, ik ga direct eventjes een aantal docu's erop naslaan! :)

  • roelio
  • Registratie: Februari 2001
  • Niet online

roelio

fruitig, en fris.

AMD Phenom II X4 // 8 GB DDR2 // SAMSUNG 830 SSD // 840 EVO SSD // Daar is Sinterklaas alweer!!


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op vrijdag 14 december 2001 22:35 schreef rhand0z het volgende:
Ok, daar heb ik iets om ff aan te pakken..
Ik heb namelijk geen idee wat dat zijn, ik ga direct eventjes een aantal docu's erop naslaan! :)
ik weet vrijwel zeker dat je het daarin moet zoeken

Doet iets met Cloud (MS/IBM)


  • JayTaph
  • Registratie: Oktober 1999
  • Laatst online: 28-11-2025

JayTaph

Portability is for canoes.

Allemaal niet moeilijk gaan doen met threads en forks... gewoon lekker select() gebruiken... Daar is ie voor :+

Yo dawg, I heard you like posts so I posted below your post so you can post again.


  • roelio
  • Registratie: Februari 2001
  • Niet online

roelio

fruitig, en fris.

maar is select() standaard non-blocking?

AMD Phenom II X4 // 8 GB DDR2 // SAMSUNG 830 SSD // 840 EVO SSD // Daar is Sinterklaas alweer!!


  • Onno
  • Registratie: Juni 1999
  • Niet online
Op zaterdag 15 december 2001 12:10 schreef limoentje het volgende:
maar is select() standaard non-blocking?
select is *juist* blocking, anders zou je er niets aan hebben. Maar je kunt een timeout meegeven, en dat is dus prima geschikt voor wat rhand0z wil. (je kunt ook alarm() oid gebruiken, select keert ook terug na een signal)

  • roelio
  • Registratie: Februari 2001
  • Niet online

roelio

fruitig, en fris.

interessant, ga binnekort weer wat meer met linux aan de slag en natuurlijk moet er dan ook geprogd worden :)

AMD Phenom II X4 // 8 GB DDR2 // SAMSUNG 830 SSD // 840 EVO SSD // Daar is Sinterklaas alweer!!


Verwijderd

Topicstarter
Op vrijdag 14 december 2001 23:45 schreef JayTaph het volgende:
Allemaal niet moeilijk gaan doen met threads en forks... gewoon lekker select() gebruiken... Daar is ie voor :+
Ik ben eventjes stevig op zoek geweest naar docs over select() maar heb niets kunnen vinden.. Weet iemand hier misschien een handig doc over?

Verder ben ik eventjes met de threads bezig geweest - wat overigens nog niet gelukt is - en ik snap dit stukje voorbeeldcode nog niet helemaal..

Als ik als C-leek dit probeer te onderbouwen kom ik niet verder dan dat thread_function een attribuut heeft, argument die een geheugenadres bevat waarnaar die verwijst, maar dat deze wordt ontweken, gevoid...

Ik heb flink wat docu's betreffende pointers etc doorgelezen, maar ik kom hier toch nog niet helemaal uit..

http://centaurus.cs.umass.edu/~wagner/threads_html/tutorial.html
code:
1
2
3
4
5
6
7
  pthread_t    a_thread;
  pthread_attr_t    a_thread_attribute;
  void        thread_function(void *argument);
  char        *some_argument;
  
  pthread_create( &a_thread, a_thread_attribute, (void *)&thread_function, 
           (void *) &some_argument);

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 15-09 22:39
code:
1
man select

[edit]

Wat doet select eigenlijk met de cycles waarin 'ie wacht op een timeout/signal ? Worden deze economisch benut door het systeem?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • JayTaph
  • Registratie: Oktober 1999
  • Laatst online: 28-11-2025

JayTaph

Portability is for canoes.

Op maandag 24 december 2001 14:25 schreef farlane het volgende:
code:
1
man select

[edit]

Wat doet select eigenlijk met de cycles waarin 'ie wacht op een timeout/signal ? Worden deze economisch benut door het systeem?
Eventjes snel gekeken in fs/select.c. Select pollt alle descriptors (vanaf 0 tot aan maxdescriptors die je opgeeft in de select()). Daarna, als er nog tijd over is gaat hij schedule_timeout, die een timer aanzet, andere processen scheduled (en uitvoert) en terugsprint zodra de timer afgaat. Dat gaat oneindig door totdat de timeout value 0 is, of totdat er een verandering in de descriptors optreedt.

Yo dawg, I heard you like posts so I posted below your post so you can post again.


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 15-09 22:39
Op maandag 24 december 2001 15:25 schreef JayTaph een duidelijke uitleg van de werking van select
Dank voor de uitleg. Was toevallig zelf ook met select(...) aan het stoeien om een fatsoenlijke timeout te kunnen instellen bij een read(...) op een socket.

Kennelijk wordt
code:
1
setsockopt(...,SO_RCVTIMEO,...);

onder Linux niet ondersteund.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.

Pagina: 1