fork()
-
Hallo Zusammen,
Ich möchte mit fork() einen 2. Prozess starten und dass der Parent-Prozess überprüft ob der Child-Prozess fertig ist. Wie mache ich dies am besten? Ich hab schon versucht, dass der Child-Prozess eine Variable in eine Datei schreibt und der Parent-Prozess die Datei nach und nach ausliest, ob die bestimmte Variable drin steht, was aber nicht klappen will.....
-
wenn sich der kindprozess beendet wird ein signal
an den vaterprozess gesendet (SIGCHLT).
also:void sigchld_handler( int s ) { /* die funktion wird aufgerufen, * wenn ein kindprozess beendet wird */ .... /* das wait am ende der funktion ist * sinnvoll, da sonst zombi-prozesse * erzeugt werden */ wait( NULL ); } /* registriere eine funktion, * die immer dann aufgerufen wird, wenn * sich ein kindprozess beendet */ if ( signal( SIGCHLD, sigchld_handler ) == SIG_ERR ) { perror( "konnte den sigchld handler nicht initialisieren" ); exit( 1 ); }
das signal( SIGCHLD....)
machst du nur einmal zu beginn des vaterprozesses.
-
Okay, so hats funktionier!! : )
Besten Dank!