Hallo,
Interessant wäre aber noch die Frage, was passiert, wenn ich auf SIGTSTP im Prozess reagiere - ist das lediglich als Möglichkeit für den Programmierer gedacht, z.B. offene Dateien zu schließen, damit diese nicht für die ganze Zeit der Pause gesperrt sind - also: wird der Prozess nach seiner Reaktion auf SIGTSTP zwangsgestoppt oder kann der Prozess ein pausieren "unterdrücken", also nicht ermöglichen?
Eine sehr gute Frage, ich würde inzwischen darauf tippen, dass der Prozess bei einem abgefangenem Signal weiterläuft, es sei denn, er schickt sich im Signalhandler selbst SIGSTOP (wenn er nochmal SIGTSTP schicken würde, würde er den Signalhandler bloß wieder aufrufen). Ist aber nur Spekulation meinerseits, ich bin noch nicht dazu gekommen, das näher auszutesten, komme vor dem Wochenende wahrscheinlich auch nicht dazu.
declare(ticks = 1);
function handleSignals($signal){
echo "$signal\n";
}
pcntl_signal(SIGTERM,"handleSignals");
for($i=0;$i<5;$i++){
posix_kill(getmypid(),SIGTERM);
sleep(2);
}
der Prozess läuft einfach weiter
declare(ticks = 1);
function handleSignals($signal){
echo "$signal\n";
}
pcntl_signal(SIGTERM,"handleSignals");
pcntl_signal(SIGTERM,"handleSignals");
for($i=0;$i<5;$i++){
posix_kill(getmypid(),SIGTERM);
sleep(2);
}
for($i=0;$i<5;$i++){
posix_kill(getmypid(),SIGTSTP);
sleep(2);
}
hier selbes Bild. PHP-Prozesse werden, wenn ein SignalHandler eingerichtet ist, nicht automatisch gestoppt.
Gruß aus Berlin!
eddi