Licznik procesow potomnych, funkcja fork

0

Wie ktoś może jak wprowadzić licznik procesow potomnych. Chciałbym ograniczyć procesy tak, aby każdy miał maksymalnie k procesow potomnych

0

Nie wiem czy dobrze zrozumiałem, ale ilość procesów potomnych zależy do ilości wywołania fork(). Wspomnianą ilość liczy się ze wzoru 2^n gdzie n to ilość wywołań forka.

0

Nie, chciałbym ograniczyć bezpośrednich potomków, rodzic-dziecko. Jeżeli w pętli która przejdzie 4 razy puszcze forka(), to proces macierzysty, będzie miał 4 dzieci(bezposrednich), a ta 4 dzieci będzie miała od (0-3) dzieci. Chciałbym tak manipulować tą pętla, żeby każdy rodzic miał powiedzmy maksymalnie 2 dzieci. W pewnym momencie muszę ja przerwać, Chce ja przerwać wtedy gdy liczba dzieci przekroczy 2, ale żeby to zrobić musze wprowadzić licznik, którego nie potrafie wymyślić

0

Coś takiego może:

#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>
#include <sys/wait.h>

int main(int argc, char *argv[]){
    pid_t childpid = -1;
    int i, number;
    number = atoi(argv[1]);
    for (i = 1; i <= number; i++){
        int j;
        for (j = 0; j < 2; j++){
            childpid = fork();
            if (childpid <= 0) break;
        }
        if (childpid > 0) break;
    }
    while (wait(NULL) > 0) break;
    printf("poziom: %d, ID: %ld ID rodzica: %ld, ID dziecka: %ld\n", i, (long)getpid(), (long)getppid(), (long)childpid);
    return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1