Здравствуйте, можете подсказать в чем ошибка?
Задача Написать программу которая вызывает функцию 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);
}