Systemprogrammierung



  • Hi Leute,

    hoffe ihr könnt mir helfen.

    Ich möchte durch einen fork() ein weiteren Prozess erzeugen.

    int main()
    {
    
       pid_t prozess;
    
       printf("-------------- Before fork()---------------\n"); 
    
       switch(prozess = fork()) {
           case -1:
        	      printf("Fork-Call failed \n");
           case 0: 
                  sleep(2); 
                  printf("Child: start. \n");
    	      sleep(2); 
                  printf("Child: my PID = %d, parent PID = %d \n", getpid(), getppid()); 
                  sleep(10);                          // ORPHAN - parentlifetime < childlifetime
    
                  printf("CHILD: exiting \n");
                  exit(0);
    
           default:
    	      printf("Parent: start. \n");
    	      sleep(3); 
                  printf("Parent: my PID = %d, parent PID = %d \n", getpid(), prozess);
                  // sleep(10);   // Zombie childlifetime > parentlifetime
                  sleep(3); 
    	      printf("Parent exiting \n");
    	      exit(0);
       }
    
       return 0; 
    
    }
    

    Die sleep Anweisungen sind da, um die Ausgabe besser verfolgen zu können.

    Ich habe nun folgendes Problem: Nachdem ich die Datei kompilliert habe

    gcc dateiname.c
    

    und das File ausführe, möchte ich den Prozess bzw. den neu erzeugten Prozess gerne Auf meinem System verfolgen. Wie kann ich die Prozesse verfolgen ?

    Ich habe versucht in einem Terminal mit htop mir alle Prozesse anzeigen zulassen und dann in einem anderen Terminal die Datei auszuführen, aber dort finde ich den Eintrag mit der PID nicht.

    Ist htop bereits eine Art "Prozesstabellle" ? Dort müsste ich ja die Statusänderung sehen, wenn ich einen Zombieprozess erstelle ?

    mit freundlichen Grüßen,

    marco



  • Ich kenne htop nicht, aber top kannst Du mit PIDs in der Kommandozeile aufrufen:

    top -p P1,P2
    

    P1 und P2 sind die PIDs Deiner Prozesse.



  • danke dir 😉


Log in to reply