И это всё МОЁ

Здравствуйте, можете подсказать в чем ошибка?


Задача Написать программу которая вызывает функцию fork() 3 раза, например в цикле(петле) и выпишите указанные выше идентификаторы для всех дочерних процессов. На основании результата выписать «генеалогическое дерево» создаваемых процессов. Сколько создаеться процессов и почему?


#include <stdio.h>


#include <stdlib.h>


#include <unistd.h>


#include <sys/types.h>


#include <sys/wait.h>


void identifiers(); // function that display identifiers


void forkMethod(); // function that calls fork() function 3 times


void tree(int pid); // function displaying processes tree


int main(void)


{


identifiers();

printf("Parent pid: %d\n", getpid());

printf("Child processes: \n";);


forkMethod();



return 0;

}


void forkMethod()


{


int k;

int status;

int pid;


for(k = 0; k < 3; k++)
{
pid = fork();
switch(pid)
{
case -1:
perror("fork error";);
exit(EXIT_FAILURE);
break;
case 0:
identifiers;
exit(0);
default:
tree(getpid());
wait(&status);
sleep(1);
break;
}
}

}


void identifiers()


{


pid_t pid = getpid();

pid_t ppid = getppid();

pid_t uid = getuid();


pid_t gid = getgid();

printf("\nPID:%d PPID:%d UID:%d GID:%d\n", pid, ppid,

uid, gid);


}


void tree(int pid)


{


char pstree[] = "pstree -np";

char cmd[12];

sprintf(cmd, "%s%d", pstree, pid);

system(cmd);

}









 , ,