Hallo nochmal,
Was mich eher gewundert hat, ist, dass mein Testprozess kein SIGTTOU bekommen hat, als ich ihn normal im Hintergrund laufen ließ (d.h. ohne setsid()). Beim Lesen von der Eingabe hat das dagegen funktioniert.
Ich habe das jetzt nochmal nachgelesen, mit tcsetattr() muss das Attribut »tostop« aktiviert sein, damit SIGTTOU überhaupt aktiv wird. »tostop« ist bei mir defaultmäßig nicht aktiviert. Leider funktioniert das Abfangen mit SIGTTOU, das bei aktiviertem tostop erzeugt wird, nicht richtig in PHP (hab's getestet) - vmtl. auf Grund der Art und Weise, wie PHP Signalhandler realisiert (nicht vollständig asynchron, wie in C).
Daher kann man als Rat nur geben: Weder SIGTTIN noch SIGTTOU sollten mit PHP abgefangen werden. Wenn man sie nicht abfängt, verhält sich PHP ordnungsgemäß, wenn diese Signale kommen.
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