Hallo Jan, Jan Trippler schrieb:
Moin,
Am Donnerstag, 28. Januar 2010 18:32:57 schrieb Thomas Michalka:
Ich möchte in einem Skript mehrere Hintergrundjobs nacheinander starten, d.h. die Bash soll (zunächst) nicht warten, bis einer fertig ist, sondern alle Jobs auf die Reise schicken und danach gleich wieder weitere Anweisungen synchron ausführen. Weiter unten im Skript soll dann jedoch auf die Rückkehr (die Beendigung) aller Jobs gewartet werden, wobei die Rückgabewerte aller Hintergrundjobs ermittelt werden sollen. [...]
Hast Du Dir mal den Abschnitt "JOB CONTROL" in der bash-Manualpage zu Gemüte geführt? Unter anderem das Kommando "jobs" könnte helfen.
Habe ich, und folgende Passage hat mir zu denken gegeben, aber ich bin mir nicht sicher, ob ich alles verstanden habe: "The shell learns immediately whenever a job changes state." Ok, die Shell wacht über den Status ihrer Kindprozesse, bzw. den Status des letzten Kindprozesses einer Pipe, richtig? "Normally, bash waits until it is about to print a prompt before reporting changes in a job's status so as to not interrupt any other output." Gilt _nur_ für den Start eines Jobs aus einer Bash in einem Terminal. Die Bash berichtet erst über den Status eines Jobs, wenn der Job fertig ist *UND* wenn man (z.B. durch die Eingabetaste) einen neuen Prompt anfordert, korrekt? "If the -b option to the set builtin command is enabled, bash reports such changes immediately." Das hilft mir aber in einem Skript, das vom crond gestartet wird, nicht wirklich, denn hier gibt die Shell mangels Terminal ja keinen Promt aus. Verstehe ich das richtig so? "Any trap on SIGCHLD is executed for each child that exits. Das könnte interessant sein. Christian Boltz hat das gefunden - ich jetzt auch ;-) Gruß, Tom -- To unsubscribe, e-mail: opensuse-programming-de+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming-de+help@opensuse.org