Um die Distributionsangabe zu korrigieren, was nun erfolgt ist.
Könntest du dann die entsprechende Stelle im zweiten Skript plus ein bisschen Kontext zeigen? Ich finde es schwierig, das alleine mit Fließtext zu lösen.
Anmeldungsdatum: Beiträge: 3642 Wohnort: Köln |
Um die Distributionsangabe zu korrigieren, was nun erfolgt ist. Könntest du dann die entsprechende Stelle im zweiten Skript plus ein bisschen Kontext zeigen? Ich finde es schwierig, das alleine mit Fließtext zu lösen. |
||||||||||||||
(Themenstarter)
Anmeldungsdatum: Beiträge: 71 |
Das Passiert in Myskript. Es wird eine Datei erstellt, in der die Widergabedateien festgelegt sind. Sie bilden dann ein Array. Mit n wird dieses Array von links nach rechts abgearbeitet. Wenn in in diesem Array Bezeichnungen wie "videofile", "audiofile", "picturefile" auftauchen, sollen sie wiedergegeben werden mit omxplayer für Audio- und Videodatein und einem Bildprogramm für Bilder. Es handelt sich um ein reines Abspielen dieser Sachen. Abspielskript
Das ist mein Tasterskript
Ich drücke den Knopf und das Abspielskript (s.oben) wird ausgefühert. Dafür ist folgende Zeile da:
Drücke ich den Knopf nochmal
soll das Abspilen gestoppt werden. Nur funktioniert es nicht. Videos und Audios werden einfach weiter abgespielt. Weder
noch
hilft. P.S bevor myscript startet, checke ich noch mit
ob, my script schon gestartet wurde. Wenn nicht, dann soll es starten. |
||||||||||||||
Anmeldungsdatum: Beiträge: 3642 Wohnort: Köln |
Okay, das macht es leichter nachzuvollziehen, aber noch besser wäre es, wenn du einfach das Original zeigen würdest anstatt mehrere Versionen desselben Abschnitts im selben Beitrag:
Also eigentlich sieht es bei dir so aus?
In dem Fall sollte die Variable Ich probiere das so: ps -C xterm || xterm Beim ersten Mal findet es keine xterm-Instanz und startet mir daraufhin eine solche. Beim zweiten Aufruf zeigt es mir nur Folgendes an: PID TTY TIME CMD 6220 pts/0 00:00:00 xterm [3]+ Fertig ps -C xterm || xterm Weniger elegant wie || ist folgendes Konstrukt:
Das funktioniert und speichert wirklich die PID von xterm. Vielleicht kannst du das entsprechend anpassen. |
||||||||||||||
(Themenstarter)
Anmeldungsdatum: Beiträge: 71 |
Hier kann man die ganze Version finden http://pastebin.com/6Piqgay1 Also muss das dann so aussehen?
Verstehe ich nicht ganz, statt xterm soll ich aber
hinschreiben oder? |
||||||||||||||
Anmeldungsdatum: Beiträge: 3642 Wohnort: Köln |
Ja, xterm diente mir nur als Testprogramm, weil ich dein Skript nicht hatte. Wenn du diese Befehle nimmst: ps -C myscript.sh &>/dev/null || myscript & pid=$! … wird die Variable Meine einfache Version mit Deine Version (wichtige Stellen markiert): [foo@bar ~]$ ps -C xterm || xterm & [1] 5422 [foo@bar ~]$ PID TTY TIME CMD [foo@bar ~]$ echo $! 5422 [foo@bar ~]$ ps -C xterm || xterm & [2] 5438 [foo@bar ~]$ PID TTY TIME CMD 5424 pts/1 00:00:00 xterm [2]+ Fertig ps -C xterm || xterm [foo@bar ~]$ echo $! 5438 [foo@bar ~]$ ps -C xterm || xterm & [2] 5440 [foo@bar ~]$ PID TTY TIME CMD 5424 pts/1 00:00:00 xterm [2]+ Fertig ps -C xterm || xterm [foo@bar ~]$ echo $! 5440 Ergebnis: Es wird immer eine andere PID gespeichert, obwohl die PID von xterm natürlich gleich bleibt. Meine Version: [foo@bar ~]$ if ! ps -C xterm; then xterm & pid=$!; fi PID TTY TIME CMD [1] 5336 [foo@bar ~]$ echo $! 5336 [foo@bar ~]$ [1]+ Fertig xterm [foo@bar ~]$ if ! ps -C xterm; then xterm & pid=$!; fi PID TTY TIME CMD [1] 5362 [foo@bar ~]$ echo $! 5362 [foo@bar ~]$ if ! ps -C xterm; then xterm & pid=$!; fi PID TTY TIME CMD 5362 pts/1 00:00:00 xterm [foo@bar ~]$ echo $! 5362 Ergebnis: Die PID bleibt immer gleich, nämlich die von xterm. Und damit dein Programm korrekt funktioniert, muss die PID immer die der laufenden myscript-Instanz sein, nicht die von |
||||||||||||||
(Themenstarter)
Anmeldungsdatum: Beiträge: 71 |
Ok, verstehe Also muss ich nicht so
hinschreiben, sondern so
Aber warum, wenn ich auf den Knopf drücke, werden nicht Videos abgespielt, sondern es erscheint nur diese Zeile
Normalerweise kommt die, wenn ich -ps in die Console schreibe. |
||||||||||||||
Anmeldungsdatum: Beiträge: 3642 Wohnort: Köln |
Es war ja ein vereinfachtes Beispiel – wenn du die ps-Ausgaben nicht sehen willst, fügst du
|
||||||||||||||
(Themenstarter)
Anmeldungsdatum: Beiträge: 71 |
Ok, danke schon mal für gute Tipps, muss das erstmal so probieren. Habe kein RasPi grade da. |
||||||||||||||
(Themenstarter)
Anmeldungsdatum: Beiträge: 71 |
Also so sieht jetzt mein Code aus. Mit
ist gemeint, dass der Prozess sofort beendet wird? Folgendes passiert: Drücke ich auf den Knopf sehe ich zuerst
dann startet das Myscript, Dateien werden abgespielt. Drücke ich noch mal, wartet der Omxplayer, bis die grade laufende Datei zu Ende abgespielt wird und beendet dann. Dies passiert allerdings, wenn ich drücke, wenn nur die erste oder zweite Datei läuft. Wenn ich drücke, wenn die dritte, vierte usw Datei abgespielt wird, dann pasiiert nichts. Ist da noch im Code ein Fehler drin?
|
||||||||||||||
(Themenstarter)
Anmeldungsdatum: Beiträge: 71 |
hilft auch nicht. ☹ |
||||||||||||||
Anmeldungsdatum: Beiträge: 3642 Wohnort: Köln |
An dem Befehl stören mich jetzt noch zwei Sachen:
Und wenn du schon Leerzeichen am Zeilenanfang benutzt, um den Code leichter lesbar zu machen, dann solltest du das auch konsequent und richtig umsetzen. Dein erster if-Block hat Kraut-und-Rüben-Einrückungen. 😉 Ich würde den Block so schreiben:
Auf diese Weise siehst du leicht, welches fi zu welchem if gehört. Den Rest seh ich mir später noch einmal an, wenn ich deine Fehlerbeschreibung noch einmal gelesen habe. |
||||||||||||||
(Themenstarter)
Anmeldungsdatum: Beiträge: 71 |
Ja, das heißt myskript.sh. Hatte aber auch andere Namen gehabt, aber dann überall einhetlich. Daran liegt es nicht. Kann einfach nicht verstehen, wieso kill mich hier nicht weiter bringt. |
||||||||||||||
Anmeldungsdatum: Beiträge: 3642 Wohnort: Köln |
Leite die Ausgabe des kill-Befehls doch mal in eine error.txt aus:
Dann kannst du nachlesen, was da überhaupt passiert. Wenn der Befehl nur die Bedienungshilfe ausspuckt, ist die PID nicht (mehr) vergeben. Außerdem könntest du direkt nach
|
||||||||||||||
(Themenstarter)
Anmeldungsdatum: Beiträge: 71 |
Also
erzeugt zwar eine Datei, aber die ist leer. Ok einmal sehe ich
und beim Drücken kommt nocheinmal
|
||||||||||||||
Anmeldungsdatum: Beiträge: 7174 Wohnort: Wolfen (S-A) |
Na ja, das ganze ist doch ein ziemliches Stochern im Nebel ... Kläre doch mal bitte zuerst mal die Verhältnisse mit Hand.
Probier das bitte mal so, in kleinen Schritten, per Hand, und verrate uns, welche Meldungen jeweils kommen. LG, track |