Shell befehl in Ruby - beenden? Output verstecken?
Setax
- programmiertechnik
Hallo!
Ich weiss das ist ein HTML Forum, aber es kennen sich sicher auch einige von euch mit Ruby aus!
Und zwar führe ich mit
exec "mplayer http://dubstep.fm/listen.fm"
Einen Befehl zum Streamen dieses Streams aus, ich würde jetzt allerdings gerne nur die Letzte Zeile da stehen haben und diesen System auch wieder beenden können.
Den mplayer zu killen, würde sudo Rechte erfordern und würde auch andere Prozesse mit reissen, das will ich also nicht...
Ich such schon einige Zeit in den Ruby Docs rum, finde aber nichts... Auch google hat dazu nicht viel zu sagen...
Hat jemand eine Idee?
Wäre über schnelle Hilfe sehr dankbar!
L.g. Seta
Ok ich bin ein kleines Bisschen weiter gekommen... ABER
also
exec "mplayer http://dubstep.fm/listen.fm"
ist auf jeden Fall mal Falsch weil es den Prozess ersetzt
da gehört wenn schon:
system "mplayer http://dubstep.fm/listen.fm"
Da kann ich den Output z.b. mit
exec "mplayer http://dubstep.fm/listen.fm > output.txt"
Mehr oder weniger unterbinden, den da tauchen da wirre Fehler auf...
Aber mein Script läuft jetzt aber nicht weiter, und ob es wirklich optimal ist kontinuierlich die letzte Zeile von output.txt auszulesen ist Fraglich...
Weiterlaufen tut es wohl darum nicht, weil der Befehl ja kein Ende nimmt... Mit den verschiedensten IO Methoden, kommt erst gar kein Sound... die liesen sich aber wenigsten vom Output her Filtern und auch beenden...
L.g. Seta
exec "mplayer http://dubstep.fm/listen.fm"
Wenn ich dich richtig verstehe, hast du kein Ruby Problem im
eigentlichen Sinne. Versuchs doch mal, indem du ein shell
Script schreibst, das den mplayer mit "&" aufruft (in den
Hintergrund schieben).
mplayer http://dubstep.fm/listen.fm &
Die shell merkt sich die Prozessnummer in der Variabeln
§! zum Testeb echo §!
ausführen.
Wenn du meinst, es sein an der Zeit, dann kannst du mit
kill -9 §!
die Party beenden ...
Das shell Script kannst du dann natürlich aus Rubs starten. Ob
mit exec oder system wirst du dann noch in Erfahrung bringen
müssen.