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