2 Programme parallel ausführen

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo, habe folgende Frage.

    Möchte vom PC aus den Pi steuern. Also drücke ich 'a' startet ein Programm, drücke ich 'b' startet ein anderes Programm und zwar sollen nach Bedarf auch beide gleichzeitig laufen können.

    Drücke ich 'a' startet auch das entsprechende Programm, jedoch sind weitere Aktionen nicht möglich (werden ignoriert?). Denn wenn ich dann 'b' drücke während das Programm a läuft, passiert ncihts. Erst wenn ich mit Ctrl+C drücke und somit das Programm A beende, startet das Programm B.

    Ist so was mit threading zu erledigen?

    Einmal editiert, zuletzt von Cool_pi (5. März 2015 um 22:00)

  • Hallo Cool_Pi,

    was passiert bei:

    Code
    case 'a':
        serialPuts(uart_device, "Programm startet");
        system("/home/pi/project/A.py &");
        break;
    case 'b' :
        serialPuts(uart_device, "Programm B startet")
        system("/home/pi/project/B.sh &");
        break;

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    2 Mal editiert, zuletzt von Andreas (12. Oktober 2017 um 20:53)

  • Ich würde es so gestalten:

    Eine Schleife läuft das switch case Szenario immer wieder durch.

    In den Anweisungen schreibst du lediglich die jeweilige Methode die ausgeführt werden soll als Thread gestartet.
    In der ausgeführten Methode sollten dann die Befehle stehen, die du ausgeführt haben möchtest.

    Ich denke so sollte es klappen.

    Einmal editiert, zuletzt von Moo (4. März 2015 um 23:38)

  • Wenn Du ein & am Ende beim system Call anfügst wir es funktionieren. Die Programme laufen dann im Background. Die Frage ist dann aber wie Du die beiden Programme wieder kontrolliert stoppen kannst. Oder ist das für Dich kein Problem?

  • Ein anderer Ansatz, falls das in deinem Fall geht, wäre "screen".

    Code
    screen -AmdS NameDerScreenSession $Befehl
    screen -AmdS NameDerScreenSession /pfad/datei.sh

    Die könntest du auch kontrolliert abschalten....

    Einmal editiert, zuletzt von Moo (4. März 2015 um 23:45)

Jetzt mitmachen!

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