Thread fork und growisofs (12 answers)
Opened by cyborg0001 at 2011-03-31 10:30

murphy
 2011-03-31 12:38
#147208 #147208
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
2011-03-31T08:30:39 cyborg0001
[...]
Code (perl): (dl )
1
2
3
4
5
6
    for(;;)
    {
      select(undef,undef,undef,0.1);          #sleep for 0.1 sec
      # Fortschritt abprüfen...
      if (kill(0,$pid_c)==0){last;} #child finished; go on
    }

[...]

Am Rande bemerkt ist diese Schleife nicht nur ineffizient, sondern auch umständlich. Den gleichen Effekt kann man mit dem extra dafür vorgesehenen Systemaufruf waitpid erreichen:
Code (perl): (dl )
waitpid($pid_c, 0); # wait until $pid_c terminates

Dieser Aufruf wird entweder $pid_c zurückgeben, wenn der Kindprozess sich beendet hat, während waitpid auf ihn wartete oder -1, falls der Kindprozess schon vorher beendet und $SIG{CHLD} = 'IGNORE' gesetzt war.
When C++ is your hammer, every problem looks like your thumb.

View full thread fork und growisofs