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!


Anmelden zum Antworten