Potrzebuję pomocy w zadaniu z programowania, z którym wybitnie się nie lubię.
Nie chcę oczywiście, żeby ktoś napisał za mnie cały kod, ale chętne przyjmę jakieś rady i wskazówki.
Kod ma utworzyć drzewo procesów jak poniżej:
Proces który jest korzeniem drzewa jest macierzysty, pozostałe P powstają w wyniku fork(), a X to pstree.
Dodatkowo wypisać PID ( getpid() ), PPID ( getppid() ) i zawiesić się na parę sekund (ja realizuję to funkcją sleep).
Ostatecznie na ekranie ma wyświetlić się drzewo (za pomocą funkcji exec* i pstree -c) i lista z PID i PPID.
Do tej pory wyrzeźbiłam coś takiego:
kod
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <stdlib.h>
// === FUNKCJA WYSWIETLAJACA NUMER PROCESU ===
void numer (int n){
printf(“Proces: %d\t PID: %d\t PPID: %d”, n, getpid(), getppid());
sleep(5);
}
// === MAIN ===
int main(void){
int p12, p13, p14, p15, p16, p17, p18, p19, p20, p21, p22;
char bufor[20];
sprintf(bufor, “pstree -c %d”, getpid());
if(!(p12=fork())){
if(!(p13=fork())){
if(!(p14=fork())){ numer(14); printf("\n");}
else{
if(!(p15=fork())){ numer(15); printf("\n");}
else{ numer(16); printf("\n");}
}
}
else { numer(13); printf("\n"); }
}
else{
if(!(p17=fork())){ numer(17); printf("\n");}
else{
if(!(p18=fork())){ numer(18); printf("\n");}
else{ numer(19); printf("\n");}
}
}
else{
if(!(p20=fork())) { numer(20); printf("\n");}
else{
if(!(p21=fork())) { numer(21); printf("\n");}
else {numer(22); printf("\n");}
}
}
else { numer(12); printf("\n");} // !!!
sleep(15);
return 0;
}
Co powinnam zrobić dalej?