parent soll mehr als ein child forken -> defunct



  • Hey,
    ich möchte mehrere childs forken. Solange ich ein fork() ausführe läufts, aber beim zweiten kommt ein defunct.
    So sieht der Code aus:

    int main(){
    
    pid_t id1 = fork();
    if(id1==0){
     MeinProzess m();
     m.start();//in start() steht eine endlosschleife: while(1){sleep1();}
    }else{
     //do stuff here. 
    }
    }
    

    Das funtzt, wenn ich in der console "ps" aufrufe habe ich beide Prozesse:
    1234 MeinProzess
    1235 MeinProzess

    Wenn ich aber nicht nur ein Kind erzeugen möchte sondern mehrere kommt es zu einem defunct:

    int main(){
    
    pid_t id1 = fork();
    if(id1==0){
     MeinProzess m();
     m.start(); //in start() steht eine endlosschleife: while(1){sleep1();}
    }else{
    
      pid_t id2 = fork();
      if(id2 == 0){
        MeinProzess m1();
        m1.start(); //in start() steht eine endlosschleife: while(1){sleep1();}
      }else{
    
       //do stuff here
      }
    
     //do stuff here. 
    }
    }
    

    Wenn ich diesen Code ausführe passiert folgendes bei "ps":
    1234 MeinProzess
    1235 MeinProzess
    1236 MeinProzess <defunct>



  • Never Mind.
    Ich hatte nen Buchstabendreher bei meinem XML Parser wodurch "MeinProzess" beim initialisieren abgestürzt ist. Deshalb sah es so aus als ob beim zweiten Prozess ein <defunct> kommt.

    Wie kann ich diesen Thread löschen?


Log in to reply