Hallo Dennis,
Ctrl+Z -> Job stoppen
Ok - damit ist das größte Mißverständnis meinerseits geklärt, ich dachte, dass auf der Shell auch Prozesse im Hintergrund _laufen_ könnten, aber anscheinend ist es so, dass Prozesse auf der Shell, die im Hintergrund sind, gestoppt sind und erst wieder weiterlaufen, wenn man sie in den Vordergrund holt.
Nein. Prozesse können schon im Hintergrund laufen, Ctrl+Z führt nur zu SIGTSTP, was den Prozess anhält, mit bg kannst Du den Prozess dann in den Hintergrund schicken, wo er auch munter weiterläuft.
Nur wenn sie Ausgabe produzieren oder Eingabe erwarten, wird automatisch das Signal SIGTTOU (Ausgabe) oder SIGTTIN (Eingabe) generiert - was die Prozesse sofort beendet. Wobei... Bei mir auf meinem System produziert PHP Ausgabe, obwohl der Prozess im Hintergrund läuft. SIGTTIN greift dagegen (d.h. sobald ein Prozess versucht von der Standardeingabe zu lesen, wird SIGTTIN geschickt). Ist vielleicht irgend ein Flag, das bei mir gesetzt ist...
Prozess gleich im Hintergrund starten (Achtung: falls der Prozess auf's Terminal was ausgibt kommt er nicht dazu, sondern wird instantan per SIGTTOU gestoppt):
Theoretische Frage: Kann ein Prozess auf SIGTTOU reagieren?
Ich denke schon, m.W. sind nur SIGKILL und SIGSTOP nicht abfangbar. (SIGTSTP dagegen schon, was bei Ctrl+Z generiert wird)
Ich denke doch nein, weil der Prozess da bereits gestoppt wird, oder?
Du überfragst mich gerade. ;-) Vor allem frage ich mich, was nach einem Signalhandler passiert: Wird der Prozess gestoppt oder nicht? Muss ich mal in Ruhe austesten.
Viele Grüße,
Christian
"I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup