[perl] Loop in achtergrond laten lopen

Pagina: 1
Acties:

  • VROEM!
  • Registratie: Februari 2000
  • Laatst online: 18-05-2025

VROEM!

broembroem!

Topicstarter
Ik wil in een perl script een loopje in de achtergrond laten lopen dat met behulp van mpg321 een mp3-tje speelt, wacht tot mpg321 klaar is en dan naar de volgende gaat.
Het idee is dat ik in het perl script zelf de playlists en zo beheer (dat heb ik inmiddels ook werkend).

Het perl script wacht op input van een knop aan /dev/ttyS0 (a la winamp poort control uit CME), update de text op een LCD display, stopt mpg321 en start mpg321 met een nieuw liedje.

Echter, als ik een standaard loop ga maken blijft het programma in de loop hangen zo lang mpg321 speelt. Dat is dus tot het einde van mijn verzameling en dat kan wel een dagje duren. In die tijd zou het niet wachten op input van een knopje.

Is er een manier om een loop binnen een script als zelfstandige loop te laten draaien, terwijl je tegelijk in een andere loop wacht op input van een knop?
PS: Ik probeer het gebruik van een MP3 daemon/extern script te vermijden, kom daar aub niet mee aanzetten, tenzij het _echt_ de enige oplossing is.

-knip- Script verwijderd omdat Sjaaky er weinig nut in zag -knip-

[ Voor 88% gewijzigd door VROEM! op 19-11-2004 13:34 ]

ieeeepppppp :P


  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 22-04 07:04
perl threads
Verder voegt de lap code niets toe aan de vraag die je stelt.

  • Stilgar
  • Registratie: Maart 2002
  • Niet online
Je kan met fork een child proces afvuren, en vervolgens controleren of het proces afgelopen is door bijvoorbeeld waitpid op te vragen. Je kan dan in je hoofdprogramma ook op (andere) input blijven controleren.

Meer informatie op http://perldoc.com/perl5.8.4/pod/func/fork.html en http://perldoc.com/perl5.8.4/pod/func/waitpid.html.

  • VROEM!
  • Registratie: Februari 2000
  • Laatst online: 18-05-2025

VROEM!

broembroem!

Topicstarter
Ik zal eens naar de threads kijken, die term is nieuw voor mij :)
Ik heb de code ingevoegd omdat ik dacht dat iemand er waarschijnlijk toch naar zou vragen als ik hem niet neer zou zetten. Ik trek hem er wel uit.
Met fork lijkt er toch min of meer een normale loop nodig te zijn om te blijven controleren of mpg321 nog loopt, maw het lost mijn probleem waarschijnlijk niet op, omdat ik dan de ene loop door de andere ga vervangen.

ieeeepppppp :P