Hi Ferdinand, hi Liste, Ferdinand Ihringer wrote:
Am Dienstag, 30. Dezember 2003 00:10 schrieb Gerald Goebel:
solang der kid läuft gibt waitpid 0 zurück. ist kid aber beendet, gibt waitpid die pid des beendeten kid zurück.
In perldoc -f waitpid steht bei am Anfang das: waitpid PID,FLAGS Waits for a particular child process to terminate and returns the pid of the deceased process, or "-1" if there is no such child process. On some systems, a value of 0 indicates that there are processes still running.
Da steht "on some systems". Wäre dann nicht "unless ($kid > 0 or $kid < 0)" besser als "if ($kid == 0)" ?
waitpid heißt waitpid, weil es auf die Beendigung des des angegebenen Prozess oder eines Prozesses der angegebenen Prozessgruppr wartet, der Rückgabewert ist die pid des beendeten prozesses, wichtig wenn auf Prozessgruppen gewartet wird. Ist nichts da auf was er warten kann, schlägt der Befehl fehl und gibt -1 zurück. Das ist der Normalfall. Jetzt gibt es noch die Möglichkeit, über die flags, zusagen warte nicht. Genau das wird hier benutzt (WNOHANG), dann muß waitpid 0 zurückgeben, wenn der Prozess noch läuft, bei Prozessgruppen, wenn kein Prozess beendet wurde. Das "on some systems" vermute ich mal bezieht sich darauf das es OS gibt wo er nicht wartet, also WNOHANG standard ist, er also immer 0 zurückgibt und dann weiterläuft. cu Gerald