Befehl um Prozess zu beenden (Strg + C Befehl)

  • Mein Plan ist folgender: ich möchte eine Art MP3 Player bauen, der zufällig eine Musikdatei aus einem Ordner abspielt. Das klappt auch schon soweit, zum Abspielen benutze ich folgenden Befehl:

    Code
    system ("omxplayer musikdatei.wav");

    Das Problem ist jetzt, dass ich das ganze über so kleine Tasten steuern will, die ich über den GPIO-Port angeschlossen habe, also keine Tastatur dran sein soll. Wenn jetzt ein Song grade abgespielt wird und man ihn aber abbrechen will, weiß ich nicht wie ich das realisieren kann. Wenn eine Tastatur dran wäre, würde ich das ja über Strg + C machen, da aber keine dran ist, muss ich das in den Code reinkriegen.
    Es soll abgebrochen werden, wenn eine zweite Taste gedrückt wurde.

    Beispiel:

    Code
    if (digitalRead (abbruchtaste) == 1)
           //Musikplayer abbrechen

    Habt ihr Vorschläge? Gibt es einen Strg+C C/C++ - Befehl?

  • Hmm... danke für die Antworten, aber so richtig blick ich da noch nicht durch.
    Ich hab jetzt folgenden Code:


    Funktioniert leider nicht. So richtig blick ich da nicht durch. :wallbash:
    Kann mir vielleicht jemand so schematisch den Ablauf erklären, wie das funktioniert?

  • Kann so auch nicht funktionieren ... wieso schickst Du das Signal an die PID 1?
    Mit system() kommst Du da eh nicht weiter ... system() liefert den Status des aufgerufenen Prozesses bei seinem Ende zurück.
    Möglicherweise funktioniert ein popen() mit einer write-Pipe ... da könntest Du evtl. Tastencodes schicken, um den Player zu steuern.
    Falls das mit popen() nicht funktioniert, wirst Du das wohl so machen müssen, wie es der Normalfall ist: über fork() und exec()

    cu,
    -ds-

  • darum hab ich auch killall geschrieben dann must du die ID nicht wissen dann beendet du halt alle omxplayer prozesse.
    Ansonten musst du wie schon dreamshader geschrieben hat einen anderen Befehl verwenden.


    PS: was ist #include <lcd.h>

    Einmal editiert, zuletzt von evil (13. Mai 2015 um 15:36)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!